You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python编写Discord selfbot实现斜杠命令发送?

问题核心原因
  • Discord斜杠命令不是普通文本消息,属于应用交互范畴,仅发送带/前缀的文本无法触发对应指令,必须调用专门的交互API。
  • 官方discord.py库未封装发送斜杠命令的原生方法,因为该库面向合规bot开发,不支持selfbot这类违反Discord服务条款的使用场景,合规bot也不存在主动触发其他bot斜杠命令的需求。
  • 你当前代码中使用阻塞的time.sleep()会卡住bot的事件循环,也会导致后续功能运行异常。
  • 使用selfbot本身违反Discord服务条款,你的账号存在被永久封禁的风险。
调整方案

如果你仍要实现该功能,可通过调用discord.py的底层HTTP接口发起交互请求,修改后的代码示例如下:

# coding=utf-8
import discord
import os
from keep_alive import keep_alive
import asyncio

# 必填配置项
TARGET_APP_ID = 替换为/tableflip命令所属的应用ID # 开启Discord开发者模式后可右键命令复制获取
farmchannel = 替换为实际频道ID

bot = discord.Client(intents = discord.Intents.default())

@bot.event
async def on_ready():
  print("Logged in as {0.user}.".format(bot))
  channel = bot.get_channel(farmchannel)
  if not channel:
    print("频道不存在")
    return
  while True:
    # 发起斜杠命令交互请求
    await bot.http.create_interaction(
        type=2, # 固定为2,对应应用命令交互类型
        application_id=TARGET_APP_ID,
        guild_id=channel.guild.id if channel.guild else None,
        channel_id=channel.id,
        session_id=bot.session_id,
        data={
            "name": "tableflip",
            "type": 1, # 固定为1,对应聊天输入类斜杠命令
            "options": [] # 若命令需要参数,在此处按格式填写参数列表
        }
    )
    await asyncio.sleep(1)

keep_alive()
bot.run(os.getenv("token"), bot=False)
注意事项
  • 代码中的TARGET_APP_ID必须替换为你要触发的斜杠命令所属bot的应用ID,否则请求会失败。
  • 该方法属于非官方的hack实现,可能随Discord API版本更新随时失效。
  • 再次提醒:selfbot违反Discord服务条款,使用该代码可能导致你的账号被封禁。

内容的提问来源于stack exchange,提问作者Larwive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:57:03