#python #python-3.x #discord #discord.py
#python #python-3.x #Discord #discord.py
Вопрос:
Существует ли какая-либо официальная поддержка новых команд косой черты Discord; если нет, как вы используете discord-py-slash-command
модуль, поскольку я не смог заставить это работать
Я потратил некоторое время, пытаясь понять, как использовать новые команды косой черты, и я не мог найти Discord, говорящий, как его использовать на discord.py .
После небольшого поиска я нашел модуль с именем discord-py-slash-command
, но я не мог понять, как его использовать.
Когда я попытался внедрить это в основной код моего бота, ничего не произошло, поэтому я попытался просто запустить пример, который они показали на своем веб-сайте здесь (верхний пример), не изменяя его, и это также не сработало, и вернул это сообщение об ошибке:
Traceback (most recent call last):
File "/snap/pycharm-community/224/plugins/python-ce/helpers/pydev/pydevd.py", line 2167, in <module>
main()
File "/snap/pycharm-community/224/plugins/python-ce/helpers/pydev/pydevd.py", line 2034, in main
debugger = PyDB()
File "/snap/pycharm-community/224/plugins/python-ce/helpers/pydev/pydevd.py", line 407, in __init__
self._cmd_queue = defaultdict(_queue.Queue) # Key is thread id or '*', value is Queue
AttributeError: module 'queue' has no attribute 'Queue'
Process finished with exit code 1
Вот моя копия и вставленный код из их примера:
import discord
from discord.ext import commands
from discord_slash import SlashCommand
from discord_slash import SlashContext
bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())
slash = SlashCommand(bot)
@slash.slash(name="test")
async def _test(ctx: SlashContext):
embed = discord.Embed(title="embed test")
await ctx.send(content="test", embeds=)
bot.run(".token.txt")
Комментарии:
1. discord.py не поддерживает команды косой черты, и я не думаю, что это когда-нибудь будет
2. В какой-то момент это будет поддерживаться, но, на мой взгляд, это займет много времени.
3. Ну, может быть, в какой-то момент, но создатель библиотеки не в восторге от этого ссылка
4. Создатели
discord.py
библиотеки заявили, что может потребоваться полное повторение / переделка всего пакета. Это займет МНОГО времени.
Ответ №1:
Я не очень разбираюсь, discord-py-slash-command
но, насколько я знаю, вам нужно передать некоторые аргументы, @slash.slash()
такие как description
etc.
guild_ids = [<your guild id>]
slash = SlashCommand(bot, auto_register=True)
@slash.slash(
name="ttest",
description="Sends message.",
guild_ids=guild_ids
)
async def _test(ctx: SlashContext):
embed = discord.Embed(title="embed test")
await ctx.send(content='test', embeds=)
Это будет работать, но я не рекомендую вам использовать этот модуль, пока ссылки на него не станут более понятными. Это настолько неясно и неудобно, что его синтаксис настолько сложен по сравнению с discord.py
.
Кроме того, вы должны включить applications.commands
область видимости на портале разработчика Discord -> OAuth2 -> Области видимости.
Ответ №2:
Недавно я создавал бота с помощью discord-py-slash-command. Я понял, что лучший способ создать команду — прочитать их документацию (ниже).
С вашей командой первое, что я замечаю, что я не использовал ctx: SlashContext
, — это вместо этого попробуйте использовать just ctx
. Вероятно, вы также использовали ваш скрипт Embeds=
, и я не уверен, как будут работать несколько вложений, но для одного — embed=
в нижнем регистре. Я почти уверен, что вам это не нужно content=''
.
Похоже, что ошибки исходят от pycharm, а не от самого скрипта, возможно, попробуйте другую среду разработки.
Документация: https://discord-py-slash-command.readthedocs.io/en/latest /
Типы опций (я нашел это действительно полезным): https://discord-py-slash-command.readthedocs.io/en/latest/discord_slash.model.html ?выделите = ПОЛЬЗОВАТЕЛЬ #discord_slash.model.SlashCommandOptionType.USER
Мой дискорд _stefthedoggo#1698
, напишите мне, если вам нужна дополнительная помощь, у меня есть рабочий бот, работающий исключительно на discord-py-slash-commands