如何基于discord.py开发可调用Groovy等第三方机器人的全能Discord Bot?
自研Discord Bot触发第三方Bot的可落地方案
先说你当前测试代码没法成功触发Groovy类第三方Bot的核心原因:
- 绝大多数第三方音乐Bot(包括原Groovy)的指令监听器,默认会屏蔽所有Bot账号发送的消息,这是Discord生态通用的防刷屏、防指令循环设计,你直接用Bot身份发指令文本,第三方Bot根本不会接收处理。
- 代码里用的
time.sleep()是同步阻塞方法,会直接卡死整个Bot的异步事件循环,连续发送的两条指令大概率根本发不出去。
具体实现思路(新手友好,从易到难)
1. 先修代码的基础硬伤
先把会导致Bot跑崩的问题改掉:
- 删掉所有
time.sleep()的调用,换成异步版本的asyncio.sleep(),导入asyncio模块就能用,不会卡事件循环。 - 别让你自研的Bot主动去连语音频道,Groovy本身有自动加入用户所在语音频道的逻辑,两个Bot同时占同一个语音通道的音频资源,会出现卡顿、抢通道的问题。
2. 搭无感知指令转发通道
这是兼容性最高、不需要改第三方Bot配置的实现方式:
- 当真实用户在你的Bot上输入自定义指令(比如
.play 目标歌曲名)时,你的Bot不需要自己处理播放逻辑,直接在用户所在的文本频道,发送和第三方Bot指令格式完全一致的文本内容就行。 - 要绕开第三方Bot的Bot消息过滤规则:在发送的指令文本后,附带真实触发的用户ID信息,大部分主流第三方Bot看到附带真实用户上下文的Bot消息,会自动跳过过滤,正常识别指令。
- 发送间隔用
asyncio.sleep()控制,给第三方Bot留出消息处理的时间,别连续快速刷多条指令导致被判定为刷屏。
3. 加白名单简化流程(服务器管理员可用)
如果你是测试服务器的管理员,可以直接在第三方Bot的配置面板里,把你自研的Bot账号加进信任Bot白名单,直接关掉这个账号的消息过滤规则。这种方式下发的所有指令都会被正常识别,不需要额外加用户上下文标记。
4. 直接对接第三方Bot的控制接口(长期开发最稳)
如果目标第三方Bot是可自托管的开源项目,大部分会暴露本地HTTP控制接口,你可以在自己的Bot代码里直接调用这些接口的播放、循环、切歌方法,完全不需要通过发文本消息的方式触发,不会出现被过滤、指令格式不匹配的问题,是长期迭代的最优选择。
适配你现有测试代码的修改版本
import os import discord import asyncio # 替换原time模块,解决事件循环阻塞问题 from discord.ext import commands from dotenv import load_dotenv load_dotenv() TOKEN = os.getenv("DISCORD_TOKEN") bot = commands.Bot(command_prefix = ".") @bot.event async def on_ready(): print(f"{bot.user.name} is ready") # 调整原交互指令,不需要Bot自行接入语音 @bot.command(name = "bot_interact") async def play_song(ctx, *, song_name: str): # 先校验触发用户是否在语音频道 if not ctx.author.voice: await ctx.send("请先加入语音频道后再触发播放指令") return # 发送和Groovy格式匹配的播放指令 await ctx.send(f"-play {song_name}") # 异步等待替代同步sleep,不卡Bot响应 await asyncio.sleep(1.5) # 发送循环播放指令 await ctx.send("-loop") @bot.command(name = "leave") async def leave(ctx): # 不需要自己断开语音连接,直接触发第三方Bot的退出指令 await ctx.send("-leave") bot.run(TOKEN)
容易踩的坑
- 别尝试用模拟用户身份发消息的方法绕开Bot过滤,这种行为违反Discord服务条款,会导致Bot账号被永久封禁。
- 原Groovy已经因为版权问题停止公共服务,现在服务器里运行的都是仿Groovy的替代Bot,要先手动测试目标Bot的指令格式、前缀规则,别直接硬编码原Groovy的指令。
- 不要让自研Bot和第三方音乐Bot同时接入同一个语音频道,会占用多余的音频通道资源,导致播放卡顿。
内容的提问来源于stack exchange,提问作者Katalysmus
相关产品推荐
相关产品推荐

