我目前正在 discord.py 中编写一个机器人,它执行诸如踢等 mod 命令。我正在尝试创建一个命令,您可以向服务器提出一些建议,就像他们创建一个名为建议频道的频道一样,当他们执行将其发送到该频道的命令。我有一个命令可以向特定频道发送消息以获取机器人建议,但这是我得到的最接近的命令。下面是我在 cogs 中用于建议命令的代码,是的,我使用了命令处理。
@commands.command()
async def suggest(self ,ctx , *, suggestion):
embed = discord.Embed(title=f"Suggestion from {ctx.author.name}", description=suggestion, color=discord.Color.blue())
embed.set_footer(text=f"Suggestion created by {ctx.author}")
channel = discord.utils.get(message.server.channels, name="suggestion-channel")
message = await channel.send(embed=embed)
await message.add_reaction("✅")
await message.add_reaction("❌")
await ctx.message.delete()
await ctx.send("Thank you for your suggestion!")
答案 0 :(得分:1)
首先,您不是在 on_message
事件中获取频道,也不是使用用户的消息获取服务器的频道。您必须将 message
替换为 ctx
。其次,自 discord.py 迁移后,ctx.server
不再有效。它现在被称为 ctx.guild
,您可以在他们的文档中阅读。
channel = discord.utils.get(message.server.channels, name="suggestion-channel")
# change this to:
channel = discord.utils.get(ctx.guild.channels, name="suggestion-channel")
否则,如果您发现任何其他命令不起作用,则您可能没有处理您的 on_message
事件。您可以查看有关如何解决此问题的问题: