我目前正在尝试使用python创建一个机器人,从服务器上的通道收集统计信息 . 我想看看用户在某个 Channels 发送了多少条消息 . 目前我的代码如下所示:
if message.content.startswith('!stat'):
mesg = await client.send_message(message.channel, 'Calculating...')
counter = 0
async for msg in client.logs_from(message.channel, limit=9999999):
if msg.author == message.author:
counter += 1
await client.edit_message(mesg, '{} has {} messages in {}.'.format(message.author, str(counter), message.channel))
这基本上做了我想要的,但是计算所有消息的过程非常缓慢 . 是否有另一种方法可以实现相同的结果,但响应速度更快?
1 回答
你可以:
使用
client.logs_from
时降低limit
. 您也可以保留限制,因为机器人最有可能尝试获取不存在的消息 .每个x消息与用户交互 . 例:
它会返回这样的东西:
discord.py API参考:http://discordpy.readthedocs.io/en/latest/api.html#discord.Client.logs_from