From 3bd878a85b1e45c03d08865b8ffc31ee01ddcf7c Mon Sep 17 00:00:00 2001 From: CMDR furrycat Date: Mon, 10 Apr 2017 14:25:32 +0100 Subject: [PATCH] Hiss at other bots. --- plugin/greetings/greetings.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/plugin/greetings/greetings.py b/plugin/greetings/greetings.py index b7cdd94..af0ec04 100644 --- a/plugin/greetings/greetings.py +++ b/plugin/greetings/greetings.py @@ -1,4 +1,5 @@ import asyncio +import discord import re import shlex @@ -40,6 +41,37 @@ class Greetings(DBConnection): def on_member_join(self, member): result = yield from self.maybe_greet(member) + @asyncio.coroutine + def on_member_update(self, before, after): + if before.status == after.status: + return + + if not after.bot: + return + + log.debug('{}#{} status was {} now {}.'.format(after.name, after.discriminator, before.status, after.status)) + + if discord.Status.offline not in [before.status, after.status]: + return + + try: + servers = [] + for server in client.servers: + if server.get_member(after.id): + servers.append(server.id) + if not len(servers): + log.debug("{}#{} isn't on any shared servers!".format(after.name, after.discriminator)) + return + for channel_id in [greeting['channel_id'] for greeting in list(self.get_greetings(client))]: + channel = client.get_channel(channel_id) + if not bot.shared_with(after, channel): + log.debug("{}#{} isn't in channel {} on server {}".format(after.name, after.discriminator, channel.name, server.name)) + continue + yield from bot.maybe_say(channel, 'hiss! {}'.format(after.mention)) + return + except: + log.exception('on_member_update') + def valid_commands(self): return ['greet', 'greeting', 'greetings'] -- 2.7.4