如何让Python开发的Discord bot触发Tatsu等其他第三方bot的响应
核心原因
Tatsu 内置 Bot 过滤规则,默认忽略所有来自 Bot 账号发送的指令,一是为了防止 Bot 间循环触发引发消息风暴,二是避免恶意脚本刷游戏资源。你通过标准 Discord Bot 接口发送的消息会自带 Bot 标识,Tatsu 识别后会直接跳过处理,和指令内容本身无关。
可行实现方案
- 方案1:使用 self-bot 调用用户账号接口发送消息
该方案通过第三方库绕过标准 Bot 接口,用普通用户账号的身份发送消息,消息不会带 Bot 标识,Tatsu 会正常响应。注意该方式违反 Discord 服务条款,一旦检测到会直接封禁你的 Discord 账号,风险极高。
你可以使用discord.py-self库替换原有标准discord.py库实现,示例代码如下:
注意不要泄露你的用户账号Token,避免账号被盗。import discord from discord.ext import commands # 开启self_bot模式,使用你的普通用户账号Token登录 bot = commands.Bot(command_prefix="!", self_bot=True, intents=discord.Intents.all()) @bot.event async def on_ready(): # 替换为目标频道ID target_channel = bot.get_channel(1234567890) await target_channel.send("t!fish") print("指令发送完成") bot.run("你的用户账号Token") - 方案2:键鼠自动化模拟手动操作
该方案不调用 Discord 任何接口,完全模拟真人手动点击输入框、输入指令、回车发送的操作,等同于你自己手动操作,不会触发 Discord API 层面的检测,风险远低于 self-bot,唯一缺点是需要保持 Discord 窗口在前台运行,不能最小化。你可以用pyautogui库实现,示例代码如下:import pyautogui import time # 首次使用先运行下方代码获取Discord输入框的屏幕坐标,运行后5秒内把鼠标移到输入框上即可获取 # time.sleep(5) # print(pyautogui.position()) # 替换为你自己的输入框坐标 input_box_coord = (200, 950) # 点击激活输入框 pyautogui.click(input_box_coord) time.sleep(0.2) # 输入指令 pyautogui.typewrite("t!fish") time.sleep(0.1) # 按下回车发送 pyautogui.press("enter") - 方案3:硬件宏模拟输入
你可以使用支持宏编程的键盘/鼠标,设置触发宏自动完成输入t!fish加回车的操作,原理和键鼠自动化一致,完全模拟硬件输入,不会被任何软件检测到。
注意事项
- 无论使用哪种方案,Tatsu 自身也有反作弊检测,如果发送指令的频率过于固定、远快于普通人类手速,会被 Tatsu 判定为作弊,导致你的 Tatsu 账号游戏数据清零、甚至被封禁无法使用 Tatsu 功能,建议设置随机发送间隔,比如每30秒到2分钟随机发送一次,不要用固定间隔。
- 优先选择键鼠模拟或者硬件宏方案,self-bot 封号风险过高,不建议长期使用。
内容的提问来源于stack exchange,提问作者Allen Wei
相关产品推荐
相关产品推荐

