我正在尝试制作一个Webhook,因此如果有人说'ez',它将删除它,并通过随机附带的Webhook发送一条消息。本来我在做的是
if "ez" in message.content:
webhook = await message.create_webhook(name=ctx.author.name)
await webhook.send(ezmessages[random.randint(0, len(ezmessages))-1], username=message.author.name, avatar_url=message.author.avatar_url)
await message.delete()
await webhook.delete()
但是问题是,如果创建和删除Webhooks的速度过快,这将限制速率。因此,我想做的是检查机器人是否已经为文本通道设置了一个Webhook,以及是否有一个使用该Webhook的功能,但如果没有使用另一个功能。我认为这可以工作:
for webhook in message.channel.webhooks:
await webhook.send(ezmessages[random.randint(0, len(ezmessages))-1], username=message.author.name, avatar_url=message.author.avatar_url)
但我得到了错误
TypeError: 'method' object is not iterable
即使它应该返回一个 list
有人知道如何正确地对此进行迭代吗?
TextChannel.webhooks
它不是属性,而是函数和协程,因此你需要调用它并等待它
webhooks = await message.channel.webhooks()
for webhook in webhooks:
...
啊,谢谢,这就是我所需要的