Warm tip: This article is reproduced from serverfault.com, please click

其他-discord.py获取频道的网络钩子

(其他 - discord.py get webhooks of channel)

发布于 2020-12-01 17:57:09

我正在尝试制作一个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

有人知道如何正确地对此进行迭代吗?

Questioner
Tanuj KS
Viewed
0
Łukasz Kwieciński 2020-12-02 02:21:32

TextChannel.webhooks 它不是属性,而是函数和协程,因此你需要调用它并等待它

webhooks = await message.channel.webhooks()
for webhook in webhooks:
    ...

docs