Создание 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 discord from discord.ext import commands from 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 discord from discord.ext import commands from config import settings  bot = 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 json import 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 часть.

ссылка на оригинал статьи https://habr.com/ru/post/511454/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *