discord.py 定义 "ctx" 不带参数

discord.py defining "ctx" without parameters

我正在尝试制作一个检查频道的机器人,如果有人向该频道发送消息,他们的消息将被删除并打开另一个频道。代码是这样的:

async def on_message(message):
    if message.channel.id == 727570110432280678:
        await message.channel.purge(limit=1)
        guild = ctx.message.guild
        overwrites = {
            guild.default_role: discord.PermissionOverwrite(read_messages=False),
            guild.me: discord.PermissionOverwrite(read_messages=True)
            ctx.guild.roles[2]: discord.PermissionOverwrite(read_messages=True),
            ctx.message.author: discord.PermissionOverwrite(read_messages=True)
        }
        await ctx.guild.categories[2].create_text_channel(name='test', overwrites=overwrites)

但我必须定义“ctx”,但我不知道如何定义。当我输入

async def on_message(ctx, message):

我缺少 1 个必需的位置参数错误,所以我必须在代码中定义它。

guild = ctx.message.guild 替换为 guild = message.guild。您可以从 message 对象中获取 guild

ctx 对象通常不是必需的。事件为您提供了您需要的所有对象。 您从事件中获得的对象通常包含其他数据,例如公会对象等(只需阅读文档)。

在这种情况下,您有一个 message object from the on_message() event。 建议在 documentation 中查找,看看您可以用它做什么。 当您阅读有关 message object you will see that it has a guild object.

的文档时

现在您可以这样做了:

guild = message.guild

检索您想要的公会对象。