我正在尝试使用在 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的文档中进行了搜索,但我没有看到任何用于发送斜杠命令的内容。 预先感谢。
/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。我听说他们很快就会实现斜杠命令。
我知道这篇文章很旧,但对于每个人来说都想知道: 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 ).
尝试使用字符代码
await bot.get_channel(farmchannel).send(chr(47) + “tableflip ")
如何添加频道ID? 我做了一个频道='频道ID',但我认为它不起作用。