如何使用 Python 在 Discord 中通过 selfbot 发送斜杠命令?

问题描述 投票:0回答:4

我正在尝试使用在 repl.it 上运行的 selfbot 发送斜杠命令,但它们是作为普通消息发送的,而不是作为命令检测到的。

这是代码:

# coding=utf-8
import discord
import os
from keep_alive import keep_alive
from time import sleep
bot = commands.Bot(command_prefix="+", intents = discord.Intents.default())
def __init__(self, bot):
  self.bot = bot

@bot.event
async def on_ready():
  print("Logged in as {0.user}.".format(bot))
  while True:
    sleep(1)
    await bot.get_channel(farmchannel).send("/tableflip ")

farmchannel = CHANNEL_ID

keep_alive()
bot.run(os.getenv("token"), bot=False)

如何让它发挥作用?

我在discord.py的文档中进行了搜索,但我没有看到任何用于发送斜杠命令的内容。 预先感谢。

discord.py
4个回答
4
投票
顺便说一句,

/tableflip 不是斜杠命令。它内置于客户端中,它所做的只是将表格翻转文本放在消息的末尾。您可以通过发送附加到 (╯°□°)╯︵ ┻⁄┻

的消息来复制此功能

对于实际的斜线命令(例如“/8ball 天气怎么样”或“/保存的队列列表”或其他),您可以在开发分支中使用 discum 的 bot.triggerSlashCommand(...) 函数。

这里有 2 个示例:https://github.com/Merubokkusu/Discord-S.C.U.M/blob/development/examples/slashcommands.py

这两个例子的原因是有两种方式触发斜杠命令(因为在DM中搜索斜杠命令是通过rest请求完成的,而在行会中搜索斜杠命令是通过websocket通信完成的)。 对于哪种情况使用哪个示例并不重要。

如果你想模仿客户端,请使用公会中的第一个示例和 DM 中的第二个示例。

最后,如果你不想使用像discum这样的同步API包装器,你可以使用discord.py-self。我听说他们很快就会实现斜杠命令。


1
投票

我知道这篇文章很旧,但对于每个人来说都想知道: Discord.py 不支持 selfbot 的斜线命令,因为库不再支持 selfbot。然而,有一个名为 Discord.py-self 的库(由 discord tehe 提到),它基本上是仅用于 selfbot 的 d.py(它也可以用于普通机器人)。 要使用 dpy-self 实现斜杠命令,这里有一个可行的解决方案:

import discord
from discord.ext.commands import Bot

client = Bot(command_prefix="!", self_bot=True, chunk_guilds_at_startup=False)

@client.command()
async def bump(ctx):
  channel = client.get_channel(ctx.channel.id)
  async for command in channel.slash_commands():
    if command.name == "bump":
       await command(channel)

client.run("token")

首先我们获取当前发送斜杠命令的通道,然后使用for循环遍历该通道中的所有斜杠命令,直到找到想要的斜杠命令,然后发送它(也可以通过斜杠命令id ).


0
投票

尝试使用字符代码

await bot.get_channel(farmchannel).send(chr(47) + “tableflip ")


0
投票

如何添加频道ID? 我做了一个频道='频道ID',但我认为它不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.