discord.py - 有什么方法可以从on_message事件中获得ctx吗?



我想重新编码我的音乐机器人(当前使用命令),以便创建一个频道。如果您在该频道中编写任何消息,机器人应该播放消息中的歌曲。为此,我需要访问像voice_state这样的东西,但on_message似乎没有提供,而 ctx 可以提供。现在我正在寻找将消息转换为命令、以任何其他方式获取 ctx 或只是以某种方式访问所有语音内容的方法。

提前谢谢。

有,您可以使用Bot.get_context来实现此目的。这是一个协程。

例:

@bot.listen()
async def on_message(message: discord.Message):
ctx = await bot.get_context(message)
command = bot.get_command('command name')
await ctx.invoke(command, arg1, arg2, keywordarg1="something", keywordarg2="I like python")

命令中的位置参数,后跟关键字参数。您不需要提供ctx参数,因为ctx.invoke会在命令调用期间默认提供

实际上,没有。您可以使用message.guild.voice_client来访问voice_clientctx.voice_client是一条捷径。此外,为了访问作者的语音状态message.author.voice,您在上下文中执行的大多数操作都是公会/成员对象方法的快捷方式。但也有一些例外。

相关内容

最新更新