【发布时间】:2019-02-19 21:13:27
【问题描述】:
我试图让这个 for_log 协程工作,我想做的是删除特定月份的所有消息,在这种情况下是 8 月,我浏览了 Internet 和文档,并在另一个问题的帮助下我张贴在这里并想出了这个:
@Client.command(pass_context = True)
async def clear(ctx, number: int, month, year):
def around_month(month, year):
begin = datetime.strptime(f'1 {month} {year}', '%d %b %Y')
if begin.month == 12:
end = datetime(begin.year+1, 1, 1)
else:
end = datetime(begin.year, begin.month, 1)
return begin, end
if ctx.message.author.id not in AdminIDs:
await Client.send_message(ctx.message.channel, 'You do not have permission to use this command')
return
counter = 0
begin, end = around_month(month, year)
tmsg = await Client.send_message(ctx.message.channel, 'Progress: 0/' + str(number))
async for x in Client.logs_from(ctx.message.channel, limit = number, after=begin, before=end):
counter += 1
print(counter)
await Client.edit_message(tmsg, 'Progress:' + counter + '/' + str(number))
await Client.delete_messages(x)
await asyncio.sleep(1.5)
await Client.send_message(ctx.message.channel, 'Operation completed! ' + 'Cleared: ' + str(counter) + ' items')
然后使用!fclear 100 AUG 2018
这乍一看还不错,但不知为何,它并没有删除任何消息,我插入了一个计数器,看看 for 循环是否真的通过了计数器,它什么也没得到,它仍然是零,很有趣,我试图在 for 循环内打印计数器,但它没有将它打印到控制台,我认为发生这种情况的唯一原因是它根本没有进入 for 循环,这可能是因为它没有找到任何消息吗?我不知道。控制台或其他任何地方都没有错误
【问题讨论】:
标签: python-3.x discord.py