【问题标题】:Send a message to a channel in a loop discord.py在循环中向频道发送消息 discord.py
【发布时间】:2021-04-04 20:56:42
【问题描述】:

我希望机器人在循环中每隔一段时间向特定频道发送一条消息。我的代码设置与我在on_ready 函数中所做的完全一样,但出现错误。此外,我的 on_ready 函数位于 main.py 中,而我的 interval_message 位于外部 cog 中,为 loops.py

on_ready 函数(main.py):

    @client.event
async def on_ready():
    channel = client.get_channel(787469158539198484)
    await channel.send(f"{client.user.mention} online")
    print("Bot is online")

interval_message 函数(loops.py)

@tasks.loop(seconds=60.0)
async def interval_message(self):
channel = self.client.get_channel(787469158539198484)
await channel.send("Random message")

问题是on_ready 可以正常发送消息,而interval_message 返回错误:

AttributeError: "NoneType" object has no attribute "send"

那么如何让机器人循环发送消息呢?

【问题讨论】:

    标签: python discord.py


    【解决方案1】:

    self.client.get_channel(787469158539198484) 正在返回 None(其类型为 NoneType)。弄清楚为什么会这样。

    这可能是selfclient 未使用该特定通道正确初始化(无论是什么......这将有助于获得有关您正在使用的库以及变量代表什么的更多上下文)。

    【讨论】:

    • 正如标题和标签中所说,我使用的是 discord.py,这是我使用的唯一导入
    • 我还是不知道client 是什么意思。请提供更多背景信息,这里不足以回答您的问题。
    • 你熟悉 discord.py 吗?我觉得任何人都应该知道客户是什么?但无论如何“client = commands.Bot(command_prefix=get_prefix)”
    猜你喜欢
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 2020-10-01
    • 1970-01-01
    相关资源
    最近更新 更多