import asyncio
+import discord
import re
import shlex
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']