我想重新编码我的音乐机器人(当前使用命令),以便创建一个频道。如果您在该频道中编写任何消息,机器人应该播放消息中的歌曲。为此,我需要访问像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_client
,ctx.voice_client
是一条捷径。此外,为了访问作者的语音状态message.author.voice
,您在上下文中执行的大多数操作都是公会/成员对象方法的快捷方式。但也有一些例外。