如何让Python开发的Discord Bot调用其他Discord Bot的命令?
解决Discord Bot触发音乐Bot播放指令的问题
核对音乐Bot的指令参数格式
不同音乐Bot的/play指令参数规则可能不同,比如有些参数名是query而非prompt,或者不需要前缀标识。先手动在聊天窗口输入/play,通过Discord的自动补全确认正确的参数名和格式,确保你的Bot发送的指令完全匹配音乐Bot的要求。用Slash Command API发送指令,而非纯文本
直接发送/play prompt:[SONG_NAME]只是普通文本消息,音乐Bot只会监听真正的斜杠交互指令,不会识别文本里的斜杠字符串。你需要通过discord.py的API构造并发送标准的Slash Command,示例代码如下:import discord from discord import app_commands async def trigger_music_play(interaction: discord.Interaction, song_name: str): # 替换为目标音乐Bot的ID music_bot_id = 123456789012345678 music_bot = interaction.guild.get_member(music_bot_id) if not music_bot: await interaction.response.send_message("音乐Bot未加入当前服务器") return # 构造与音乐Bot匹配的指令参数 command_payload = app_commands.CommandData( name="play", type=discord.AppCommandType.chat_input, options=[ app_commands.Option( name="prompt", # 必须和音乐Bot的参数名完全一致 type=discord.AppCommandOptionType.string, value=song_name ) ] ) # 发送交互指令请求 await interaction.client.http.interaction_create( channel_id=interaction.channel.id, guild_id=interaction.guild.id, data=command_payload.to_dict() )注意:需确保你的Bot拥有发送应用指令的权限,且目标音乐Bot未限制仅人类用户触发指令。
检查权限与Bot交互限制
部分音乐Bot默认禁止其他Bot触发自身指令,可前往音乐Bot的官方设置页面(若有)开启跨Bot交互权限;同时确认你的Bot在服务器内拥有发送消息、使用应用指令的基础权限。测试前缀指令的可能性
少数音乐Bot支持监听带特定前缀的文本指令(比如!play [歌曲名]),先手动发送这类前缀指令验证音乐Bot是否响应,若有效,再让你的Bot发送对应的前缀指令字符串即可。
内容的提问来源于stack exchange,提问作者ElayA
相关产品推荐
相关产品推荐

