def handle_message_mention(self, origin, message):
perms = origin.permissions_in(message.channel)
if not perms.read_messages:
# if you can't read the messages, then you shouldn't get PM'd.
return
messages = []
async for msg in self.bot.logs_from(message.channel, limit=3, before=message):
messages.append(msg)
messages.reverse()
messages.append(message)
if origin.status != discord.Status.online:
# wait 30 seconds for context if it's not always on
await asyncio.sleep(30)
# get an updated reference, server references don't change
member = message.server.get_member(origin.id)
if member is None or member.status == discord.Status.online:
# they've come online, so they might have checked the mention
return
# get the messages after this one
ext = []
async for msg in self.bot.logs_from(message.channel, limit=3, after=message):
ext.append(msg)
ext.reverse()
messages.extend(ext)
try:
fmt = 'You were mentioned in {0.channel.mention}:\n{1}'
fmt = fmt.format(message, '\n'.join(map(self.format_message, messages)))
await self.bot.send_message(origin, fmt)
except:
# silent failure best failure
pass
评论列表
文章目录