Your ultimate Discord interactions library for discord.py.
About
What is discord-interactions?
discord-interactions is, in the simplest terms, a library extension that builds off of the currently existing discord.py API wrapper. While we do use our own basic class code for our own library, a large majority of this library uses discord.py base events in order to make contextualization of interactions relatively easy for us.
When did this begin?
In mid-December of 2020, Discord released the very first type of components, slash commands. These were relatively primitive at the time of their debut, however, over time they slowly came to grew more complex and mutable. This library was created 2 days after the release of slash commands to Discord, and ever since has been actively growing.
What do we currently support?
At this time, we are able to provide you an non-exhaustive list (because Discord are actively creating more interactions at this time) of all components integrated as interactions:
Making a Discord Bot | Part 10: Cogs | Discord.py 2.0
- Slash Commands
- Buttons
- Selects (also known as dropdowns or menus)
Installation
We recommend using pip in order to install our library. You are able to do this by typing the following line below:
pip install -U discord-py-slash-command
Examples
Slash Commands
This example shows a very quick and simplistic solution to implementing a slash command.
This basic example shows how to easily integrate buttons into your commands.
Buttons are not limited to slash commands and may be used in regular discord.py commands as well.
For more advanced use, please refer to our official documentation on buttons here.
Selects
This basic example shows how to add selects into our bot. Selects offer the same accessibility as buttons do in premise of limitations.
For more advanced use, please refer to our official documentation on selects here.
Context Menus
This basic example shows how to add a message context menu.
For more advanced use, please refer to our official documentation on context menus here.
- The discord-interactions library is based off of API gateway events. If you are looking for a library webserver-based, please consider:
- dispike
- discord-interactions-python
- discord-api-docs Community Resources: Interactions
Источник: pypi.org
Как мне использовать cogs с discord.py?
У меня написан довольно большой бот для Discord. В нем более 1000 строк кода. Когда я исследовал, как это сделать, на Youtube и здесь, похоже, ничего не работает. Мне было интересно, может ли кто-нибудь объяснить, как правильно использовать винтик, возможно, с примерами фотографий. Я могу показать, какой у меня код, чтобы помочь вам понять, чего я хочу.
(Discord.py) — How to Easily Use Cogs!
Примером может служить то, что я хочу, чтобы все мои команды мода были в отдельном файле, чтобы он был чище и организованнее. Итак, как мне это сделать? Вот пример моего кода:
Команды мода Я хочу переместить в отдельный файл с помощью Cog
Импортирует в настоящее время, что у меня есть
Префикс и каталог
Идентификатор вызывающего токена — идентификатор токена указан выше, не показан на фото:
Я не уверен, как полностью запустить винтик, что еще импортировать, как вызвать файл. Я хорошо знаю Java, но пытаюсь улучшить свои навыки работы с Python с помощью Discord.
Anakrisius 29 Ноя 2018 в 00:12
2 ответа
Лучший ответ
Заметка:
Приведенное ниже было написано для более старой версии 0.16, в которой не было хорошей документации по винтикам. Новая версия 1.0 имеет хорошую документацию и полностью изменила структуру винтиков. Если вы используете современную версию discord. py следует обратиться к официальной документации.
Введение
Каждый Cog состоит из двух частей: класса и функции setup . Почти все функции setup выглядят одинаково:
def setup(bot): bot.add_cog(Cog(bot))
Где Cog — класс винтиков.
Класс cog содержит все наши команды и события как методы.
Основные изменения
Чтобы превратить своего бота в шестеренку, необходимо выполнить четыре основных преобразования:
- Замените bot.command на commands.command ( commands является from discord.ext import commands )
- Измените сигнатуры ваших функций, включив вначале self , поскольку все ваши команды и события теперь являются методами класса Cog
- Измените все ссылки на bot , чтобы вместо них ссылаться на self.bot
- Удалите все декораторы bot.event . Слушатели событий от вашего процессора регистрируются только на имя
Есть также некоторые подводные камни:
- Удалите await bot.process_commands(message) из любых событий on_message в вашем Cog. Для любого сообщения этого следует ждать только один раз. По умолчанию on_message уже делает это за вас.
- Регистрация события через Cog не удаляет другие обратные вызовы, связанные с этим событием, из вашего основного файла или других Cog. Это означает, что ваш бот может отвечать на событие on_member_join несколько раз, например, если у вас есть поведение для этого события, определенное в нескольких местах.
Примере
Допустим, у вас есть следующий бот discord.py, bot.py в каталоге src :
Затем вы превращаете эту функциональность в винтик src/cogs/maincog.py
И ваш файл bot.py будет выглядеть так
from discord.ext import commands bot = commands.Bot(command_prefix=’!’) bot.load_extension(«cogs.maincog») bot.run(«token»)
Обратите внимание, что для загрузки расширения в cogs/maincog.py мы используем load_extension(«cogs.maincog») .
Другие особенности
Cogs также позволяют определять некоторые специальные методы. Большинство из них доступно только в discord.py-rewrite и документированы здесь .
- __global_check , ранее __check , запускается перед каждой командой и должен возвращать True для продолжения этой команды.
- __local_check запускается только перед командами от этого процессора.
- __global_check_once Я считаю, что это похоже на __global_check , за исключением того, что он проверяет только один раз в случае подкоманд. Я этим не пользовался.
- __unload Вы можете обновить своего бота в реальном времени, выгрузив расширение, а затем перезагрузив его, что позволит вам обновлять винтики, не отключая бота. Этот метод вызывается, когда вы выгружаете расширение или когда ваш бот перестает работать, если вам нужно выполнить очистку.
- __before_invoke и __after_invoke запускаются до и после каждой команды от этого процессора соответственно.
- __error — обработчик ошибок для команд этого процессора.
Источник: question-it.com
Как мне использовать cogs с discord.py?
У меня написан довольно большой бот для разногласий. Он имеет более 1000 строк кода. Когда я исследовал, как сделать это на YouTube и здесь, похоже, ничего не работает. Мне было интересно, если кто-то может объяснить, как правильно использовать початки, возможно, с примерами фотографий. Я могу показать, какой код должен помочь вам понять, чего я хочу.
Примером может быть то, что я хочу, чтобы все мои команды мода были в отдельном файле, чтобы он был чище и организованнее. Итак, как мне это сделать? Вот пример моего кода:
Я не уверен, как полностью запустить Cog, что еще импортировать, как вызвать файл. Я хорошо знаю Java, но я стараюсь работать с моими навыками Python с раздором. Заранее спасибо!
user10708127 28 ноя ’18 в 21:12 2018-11-28 21:12
2018-11-28 21:12
1 ответ
Вступление
Каждый винтик состоит из двух частей: класса и setup функция. Почти все setup функции выглядят одинаково:
def setup(bot): bot.add_cog(Cog(bot))
где Cog это класс Cog.
Класс cog содержит все наши команды и события как методы.
Основные изменения
Есть четыре основных преобразования, которые вам нужно сделать, чтобы ваш бот превратился в Cog:
- замещать bot.command с commands.command ( commands являющийся from discord.ext import commands )
- Измените подписи ваших функций, чтобы включить self в начале, так как все ваши команды и события теперь являются методами класса cog
- Изменить все ссылки на bot ссылаясь на self.bot вместо
- Удалить все bot.event декораторы. Слушатели событий из вашего Cog зарегистрированы только на имя
Есть также несколько ошибок:
-
Удалить await bot.process_commands(message) от любого on_message события в твоей винтике. Для любого сообщения это следует ожидать только один раз. По умолчанию on_message уже делает это для вас.
пример
Допустим, у вас есть следующий бот discord.py, bot.py в каталоге src :
Затем вы превращаете эту функциональность в винтик src/cogs/maincog.py
И ваш bot.py файл будет выглядеть
from discord.ext import commands bot = commands.Bot(command_prefix=’!’) bot.load_extension(«cogs.maincog») bot.run(«token»)
Обратите внимание, что для загрузки расширения в cogs/maincog.py , мы используем load_extension(«cogs.maincog») ,
Другие преимущества
Cogs также позволяют вам определять некоторые специальные методы. Большинство из них доступны только в /questions/tagged/discord.py-rewrite и описаны здесь.
- __global_check ранее __check , запускается перед каждой командой и должен возвращаться True для этой команды, чтобы продолжить.
- __local_check работает только перед командами из этого Cog.
- __global_check_once Я считаю, что это похоже на __global_check за исключением того, что он проверяет только один раз в случае подкоманд. Я не использовал это много.
- __unload Вы можете в режиме реального времени обновить своего бота, выгрузив расширение, а затем перезагрузив его, что позволит вам обновить ваши винтики, не переводя бота в автономный режим. Этот метод вызывается, когда вы выгружаете расширение или когда ваш бот перестает работать, если вам нужно выполнить очистку.
- __before_invoke а также __after_invoke выполняются до и после каждой команды из этого Cog, соответственно.
- __error обработчик ошибок для команд из этого Cog
Источник: stackru.com