Русский
Русский
English
Статистика
Реклама

Из песочницы Создание Discord-бота на Python. Часть 1

Версии, которые стоят у автора

Версия Python: 3.8.2
Версия discord.py: 1.3.3


Приветствую, хабровчане и другие пользователи интернета. Сегодня я начну цикл статей, посвящённых созданию Discord-бота с помощью библиотеки discord.py. Мы рассмотрим создание как и примитивного бота, как и "продвинутого" бота с модулями. В этой статье мы сделаем стандартную команду и ещё одну небольшую команду. Начнём!


Создание бота и получение токена


Для того, чтобы добавить бота на сервер нужно создать свое приложение и во вкладке General Information скопировать Client ID.



Здесь заменяем CLID на ранее скопированный Client ID.


https://discordapp.com/oauth2/authorize?&client_id=CLID&scope=bot&permissions=8

Во вкладке Bot создаём бота и копируем токен.



Написание кода


Устанавливаем саму библиотеку.


pip install discord

Создаём файл config.py (так удобнее), и создаём там словарь.


settings = {    'token': 'Ваш токен',    'bot': 'Имя бота',    'id': Client ID бота, без кавычек,    'prefix': 'Префикс бота'}

Создаём main-файл, название может быть любое.
Импортируем библиотеки и наш файл конфига:


import discordfrom discord.ext import commandsfrom config import settings

Создаём "тело" бота, название может быть любое:


bot = commands.Bot(command_prefix = settings['prefix']) # Так как мы указали префикс в settings, обращаемся к словарю с ключом prefix.

Начинаем писать основной код.


@bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.async def hello(ctx): # Создаём функцию и передаём аргумент ctx.    author = ctx.message.author # Объявляем переменную author и записываем туда информацию об авторе.    await ctx.send(f'Hello, {author.mention}!') # Выводим сообщение с упоминанием автора, обращаясь к переменной author.

В конце запускаем бота с помощью:


bot.run(settings['token']) # Обращаемся к словарю settings с ключом token, для получения токена

Полный код
import discordfrom discord.ext import commandsfrom config import settingsbot = commands.Bot(command_prefix = settings['prefix'])@bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.async def hello(ctx): # Создаём функцию и передаём аргумент ctx.    author = ctx.message.author # Объявляем переменную author и записываем туда информацию об авторе.    await ctx.send(f'Hello, {author.mention}!') # Выводим сообщение с упоминанием автора, обращаясь к переменной author.bot.run(settings['token']) # Обращаемся к словарю settings с ключом token, для получения токена

Должно получится так:



Бонусный туториал!


Сделаем вывод случайных картинок с лисами
Для этого импортируем еще пару библиотек:


import jsonimport requests

Приступим к написанию команды.


@bot.command()async def fox(ctx):    response = requests.get('https://some-random-api.ml/img/fox') # Get-запрос    json_data = json.loads(response.text) # Извлекаем JSON    embed = discord.Embed(color = 0xff9900, title = 'Random Fox') # Создание Embed'a    embed.set_image(url = json_data['link']) # Устанавливаем картинку Embed'a    await ctx.send(embed = embed) # Отправляем Embed

Должно получится так:



Конец


На этом 1 часть закончена. Скоро будет опубликована 2 часть.

Источник: habr.com
К списку статей
Опубликовано: 17.07.2020 16:20:19
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Python

Api

Discord.py

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2022, personeltest.ru