我想重新编码我的音乐机器人(目前使用命令),以便创建一个通道。如果你在该通道中编写任何消息,机器人应该从消息中播放歌曲。为此,我需要访问voice_state之类的东西,但on_message似乎没有提供,而ctx提供。现在我正在寻找任何方法将消息转换为命令,以任何其他方式获取ctx或以其他方式访问所有语音内容。
提前感谢。
有,你可以使用机器人。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. gueld.voice_client
访问voice_client
,ctx.voice_client
是一个快捷方式。此外,为了访问作者的语音状态message.author语音
,您在上下文中做的大多数事情都是Guild/成员对象方法的快捷方式。不过也有一些例外。