首页 > 解决方案 > Discord.py 你能不能用# 使进入特定频道的say 命令可用?

问题描述

我正在为一个不和谐的机器人发出一个说命令,并且在大多数情况下一切正常。我想做的是一个人可以在任何频道中使用的命令,它会在被告知发送它的频道中发送委托的消息。这一切都有效,这是我的代码:

async def say(self, ctx, channelname, *, message):
        """Make the bot say whatever you want it to say"""
        channel = discord.utils.get(ctx.guild.channels, name=channelname)
        await channel.send(message)

但是,我的问题是,预期的不和谐服务器中的每个频道在频道名称前都有一个表情符号,因此使用不和谐功能要容易得多,如果您键入 # 可以单击频道名称。但是每当我这样做并用# 发送它时,它仍然会抛出这个错误代码:

AttributeError: NoneType object has no attribute “send”

有谁知道我该如何解决这个问题?

提前致谢!

标签: pythonpython-3.xdiscorddiscord.pydiscord.py-rewrite

解决方案


最好使用 ids (正如您在之前的评论中提到的)。您可以使用channel = bot.get_channel(channel_id)获取通道对象,然后调用channel.send()它。简单地获取频道不需要任何意图。您只需要确保机器人有权访问该通道并有权在该处发送。


推荐阅读