Миграция с discord.py
После прекращения поддержки discord.py
(см. здесь),
многие вилки оболочки API разветвлялись для поддержки библиотеки, чтобы постоянно обновлять её последними функциями и
изменениями Discord API - disnake
является одним из таких форков.
Таким образом, если вы выбрали disnake
в качесте своего форка для реализации взаимодействий/компонентов и других
функций, эта страница поможет вам понять изменения в синтаксисе и стремиться сделать прогресс миграции максимально
плавным.
Различия между библиотеками
disnake
основан на discord.py 2.0
, который претерпел серьёзные изменения по сравнению с предыдущей версией. Поэтому,
если вы переходите на disnake
с версии discord.py
ниже версии 2.0 вам придётся внести некоторые важные
синтаксические изменения в свой код. Вы можете обратиться к
этой странице для получения полного списка
последних изменений discord.py 2.0
, хотя здесь мы перечислим некоторые основные изменения в ссылках API:
- Методы и атрибуты, которые возвращали
TextChannel
и т.д., теперь могут возвращатьThread
. - Атрибуты, которые возвращали
Asset
, переименовы, например, атрибуты, заканчивающиеся на_url
(т.е.avatar_url
), изменяющийся наavatar.url
.User.avatar
возвращаетNone
в случае, если используется аватар по умолчанию. on_presence_update
заменяетon_member_update
для обновленияMember.status
иMember.activities
.- Вебхуки значительно изменены:
WebhookAdapter
удалён, а синхронные запросы используютrequests
теперь находится внутриSyncWebhook
. - Методы
edit
больше не обновляют кэш и вместо этого возвращают изменённый экземпляр. Client.logout
удалён; вместо этого используйтеClient.close
.Message.type
для ответов теперь являетсяMessageType.reply
.- Свойство
Reaction.custom_emoji
изменяется на методReaction.is_custom_emoji
. - Атрибуты и аргументы
missing_perms
переименовываются вmissing_permissions
. - Многие аргументы теперь только позициональные или только именованные; например,
oauth_url
теперь именованный аргумент, а методы, начинающиеся сget_
илиfetch_
, принимают только позициональные аргументы.
Изменение требований
Чтобы избежать конфликтов между библиотеками вы должны удалить discord.py
. Вы можете сделать это, используя следующую
команду в вашем терминале:
- Windows
- macOS
- Linux
py -3 -m pip uninstall discord
python3 -m pip uninstall discord
python3 -m pip uninstall discord
Чтобы установить disnake
, вы можете следовать инструкциям на этой странцие.
Перепысывание вашего бота
Как обсуждалось выше, переписывание вашего кода со старой версии discord.py
на disnake
потребует некоторых серьёзных
изменений синтаксиса. Но если вы мигрируете с discord.py 2.0
, все, что теперь осталось, - это изменить ссылки на
библиотеки во всём коде, поскольку базовый код для обеих библиотек практически одинаков.
Существует три способа переключения между библиотеками:
Замените discord
на disnake
Импортируйте
disnake
в вашем коде (и удалите строки, в которых импортируетеdiscord
).import disnake
from disnake.ext import commandsС помощью вашего любимого редактора замените каждую ссылку
discord
в вашем коде наdisnake
(это довольно просто, если в вашем редакторе есть инструмент "Найти и заменить").
Импортируйте disnake as discord
Импортируйте disnake as discord
в вашем коде (и удалите строки, в которых вы импортируете discord
). Это сокращает
затраты на изменение всех ссылок во всём коде.
import disnake as discord
from disnake.ext import commands
Using the discord
shim
Использование шим discord
позволяет вам использовать disnake
без необходимости импортировать его напрямую или
импортировать как discord - таким образом, отпадает необходимость вообще изменять ваш код. Чтобы установить шим, вы
можете использовать следующую команды в вашем терминале:
- Windows
- macOS
- Linux
py -3 -m pip install disnake[discord]
python3 -m pip install disnake[discord]
python3 -m pip install disnake[discord]
Мы не рекомендуем использовать шим, так как она обновляется реже и в некоторых случаях может нарушить поведение взаимодействий/компонентов. Если возможно, выполните одну из двух других упомянутых процедур.
И это всё! Поскольку disnake
- форк discord.py
, он наследует много общего - хотя мы рекомендуем вам всегда запускать
свой код, чтобы устранить любые возможные проблемы.