Chaka
Новичок
- Регистрация
- 27 Дек 2020
- Сообщения
- 3
- Реакции
- 6
Привет Диплерчане!
В этой теме вы узнаете как создать своего бота в дискорде, а так же, как можно с самого начала структурировать свой код.
Начнем создание бота, гайды по которому вы найдете практически везде... Но на форуме вы сможете напрямую спросить, что именно вас интересует в данной сфере - я же в свою очередь попытаюсь как можно скорее вам ответить. Начнем!
Что требуется для самого начала:
Теперь перейдем к написанию кода, но для этого нам нужен удобный редактор. К счастью, у нас есть замечательный кандидат на эту работу - PyCharm. Качаем PyCharm Community
Теперь запустите программу и создайте новый проект.
Вам нужно:
Если у вас не появился файл
Вот теперь то и начинается все самое интересное и трудное. Мы будем сразу использовать коги. Они позволят нам структруировать наш проект по папкам и отдельным файлам, где в свою очередь будет очень легко ориентироваться. Чтобы сделать запуск всех функций, нам нужно создать папку "cogs". Можете ее тоже как угодно назвать, главное в цикле запуска укажите верное имя. Так же я создам папку config.py, где буду хранить свои данные, чтобы не спалить их здесь
Должно получиться вот так:
Вот какой код будет запускать нам функции:
Все предельно просто, но давайте сначала напишем само тело бота.
Импортируем библиотеки
py = commands.Bot(command_prefix='!', intents=intents) этой строкой вы будете выполнять различные операции/обращения к API Дискорда.
Назвать вы ее можете как угодно.
Например так:
bot = commands.Bot(command_prefix='!', intents=intents)
Следовательно теперь цикл запуска всех функций будет выглядеть так:
Пока что мы закончили лишь тело нашего бота. Для проверки мы можем запустить его, нажав Shift+F10 в редакторе PyCharm
В терминале у вас должно вывестись сообщение "Бот запущен", а в дискорде бот должен появиться в сети.
Думаю, все понятно. Идем дальше...
Идем дальше.
Напишем наши первые команды. Они будут загружать/отключать/перезагружать наши функции в папке cogs. Сразу же напишем в этих функциях проверку на вас, чтобы кроме вас никто не мог воспользоваться данной функцией:
Для начала импортируем еще одну библиотеку -
Если сейчас вы попытаетесь запустить бота, то вы получите ошибку. Скоро мы это исправим, вам сначала надо понять, как это все работает.
Чтобы узнать свой айди, нужно тыкнуть правой кнопкой мыши в дискорде по себе, затем "
Если у вас нет данной кнопки, значит вам нужно включить "Режим разработчика" в настройках дискорда
Вы тоже можете использовать
Для этого создаем файл
Затем, в файле
Затем слово
Как стало все намного легче, не правда ли? Правда мы слишком долго сидим уже на месте, руки чешутся написать первую настоящую функцию! Тогда приступаем!
В папке cogs создадим файл
Импортируем
Вот наконец можно снова пробовать запустить бота! Запустился? Идем дальше!
Напишем простую функцию
Код в этом файле должен сейчас выглядеть вот так.
Запустим бота и проверим, все ли в порядке.
Замечательно! Наш бот откликается на команды.
Давайте под конец заставим его откликаться на наши сообщения в чате:
Вот только не задача, да? Бот начинает нам флудить сообщениями
а все потому, что он откликается и на свое же сообщение. Чтобы этого избежать, добавим одно условие:
Думаю на этом можно закончить, может в некоторых местах я не понятно объяснил - не бойтесь спрашивать.
Всем удачи, всем пока!
В этой теме вы узнаете как создать своего бота в дискорде, а так же, как можно с самого начала структурировать свой код.
Начнем создание бота, гайды по которому вы найдете практически везде... Но на форуме вы сможете напрямую спросить, что именно вас интересует в данной сфере - я же в свою очередь попытаюсь как можно скорее вам ответить. Начнем!
Что требуется для самого начала:
Теперь:
- Войти в Discord аккаунт по ссылке
- Во вкладе
Applications
нажать на кнопкуNew Application
и дать название- Перейдите в только что созданное приложение.
- Нажмите в списке
Settings
на вкладкуBot
, затем на "Add bot
". Дайте ему название- Получите токен бота, нажав на
Copy
- Сохранить где-нибудь токен
Молодцы! Вы создали бота. Давайте теперь пригласим его на наш сервер.
- В той же вкладке, где создавали бота, проскроллить вниз до
Privileged Gateway Intents
- Включить в этом разделе 2 параметра
PRESENCE INTENT
иSERVER MEMBERS INTENT
В дальнейшем, когда вы будете понимать, какого бота пишете или уже написали бота - выбирайте только нужные разрешения для бота.
- Снова зайдите в своего бота
- Найдите в списке
Settings
вкладкуOAuth2
- В окне
Scopes
поставь галочку наBot
- Ниже появится еще одно окно
Bot permission
. Поставьте галочку наAdministrator
- Выше, где вы ставили галочку
Bot
есть ссылка - копируете ее и в новой вкладке вставляете в поиск- Приглашаете бота
Теперь перейдем к написанию кода, но для этого нам нужен удобный редактор. К счастью, у нас есть замечательный кандидат на эту работу - PyCharm. Качаем PyCharm Community
Теперь запустите программу и создайте новый проект.
Вам нужно:
Вы создали проект.
- Запустить PyCharm
- Настроить его под свой вкус
- Тыкнуть на
New Project
- Назвать свой проект
- Тыкнуть на
Create
Если у вас не появился файл
main.py
, то создайте его, тыкнув правой кнопкой мыши в редакторе по главной папке, которую только что создали, затем нажмите в выпавшем окне New
-> Python File
и назовите его как хотите, главное помнить - этот файл будет главным, из которого будут запускаться все функции бота.Вот теперь то и начинается все самое интересное и трудное. Мы будем сразу использовать коги. Они позволят нам структруировать наш проект по папкам и отдельным файлам, где в свою очередь будет очень легко ориентироваться. Чтобы сделать запуск всех функций, нам нужно создать папку "cogs". Можете ее тоже как угодно назвать, главное в цикле запуска укажите верное имя. Так же я создам папку config.py, где буду хранить свои данные, чтобы не спалить их здесь
Должно получиться вот так:

Вот какой код будет запускать нам функции:
Python:
for filename in os.listdir('cogs'):
if filename.endswith('.py'):
py.load_extension(f'cogs.{filename[:-3]}')
Импортируем библиотеки
discord
и commands
из discord.ext
Python:
import discord
from discord.ext import commands
intents = discord.Intents.all()
py = commands.Bot(command_prefix='!', intents=intents)
py.remove_command('help')
@py.event
async def on_ready():
print('Бот запущен')
py.run('Nzk4NTUzNjUwMDMyNjcyODA5.X_2tCg.OZf3Oqxx8OGyl3nNQBobecHv57c')
command_prefix='!'
- это знак или буква, смотря что вы предпочитаете, с которого будут вызываться все функции бота. Я буду использовать "!".py = commands.Bot(command_prefix='!', intents=intents) этой строкой вы будете выполнять различные операции/обращения к API Дискорда.
Назвать вы ее можете как угодно.
Например так:
bot = commands.Bot(command_prefix='!', intents=intents)
Следовательно теперь цикл запуска всех функций будет выглядеть так:
Python:
for filename in os.listdir('cogs'):
if filename.endswith('.py'):
bot.load_extension(f'cogs.{filename[:-3]}')
В терминале у вас должно вывестись сообщение "Бот запущен", а в дискорде бот должен появиться в сети.
Думаю, все понятно. Идем дальше...
py.run(ВАШ ТОКЕН)
- вот этот момент как раз и запускает вашего бота. Весь код должен быть написан ДО него. Все, что будет написано после данной строчки - будет игнорироваться.Идем дальше.
Напишем наши первые команды. Они будут загружать/отключать/перезагружать наши функции в папке cogs. Сразу же напишем в этих функциях проверку на вас, чтобы кроме вас никто не мог воспользоваться данной функцией:
Для начала импортируем еще одну библиотеку -
import os
она позволит нам составить навигацию по папкам из главного файла.
Python:
@py.command()
async def load(ctx, extension):
if ctx.author.id == 0: # Свой ID
py.load_extension(f"cogs.{extension}")
await ctx.send('Коги подгружены.')
else:
await ctx.send('У вас нет доступа к данной команде.')
@py.command()
async def unload(ctx, extension):
if ctx.author.id == 0: # Свой ID
py.unload_extension(f"cogs.{extension}")
await ctx.send('Коги разгружены.')
else:
await ctx.send('У вас нет доступа к данной команде.')
@py.command()
async def reload(ctx, extension):
if ctx.author.id == 0: # Свой ID
py.unload_extension(f"cogs.{extension}")
py.load_extension(f"cogs.{extension}")
await ctx.send('Ког перезагружен.')
else:
await ctx.send('У вас нет доступа к данной команде.')
Чтобы узнать свой айди, нужно тыкнуть правой кнопкой мыши в дискорде по себе, затем "
Копировать ID
"Если у вас нет данной кнопки, значит вам нужно включить "Режим разработчика" в настройках дискорда

Вы тоже можете использовать
config.py
, чтобы хранить там ключи.Для этого создаем файл
config.py
если вы еще этого не сделали и пишем в нем следующее:ID = Свой ID
Затем, в файле
main.py
в самом верху пишем from config import ID
Затем слово
ID
вставляем вместо циферок в командах, то есть:
Python:
async def load(ctx, extension):
if ctx.author.id == ID:
py.load_extension(f"cogs.{extension}")
await ctx.send('Коги подгружены.')
else:
await ctx.send('У вас нет доступа к данной команде.')
@py.command()
async def unload(ctx, extension):
if ctx.author.id == ID:
py.unload_extension(f"cogs.{extension}")
await ctx.send('Коги разгружены.')
else:
await ctx.send('У вас нет доступа к данной команде.')
@py.command()
async def reload(ctx, extension):
if ctx.author.id == ID:
py.unload_extension(f"cogs.{extension}")
py.load_extension(f"cogs.{extension}")
await ctx.send('Ког перезагружен.')
else:
await ctx.send('У вас нет доступа к данной команде.')
В папке cogs создадим файл
test.py
.
Импортируем
from discord.ext import commands
и пишем:
Python:
class Testing(commands.Cog):
def __init__(self, py):
self.py = py
def setup(py):
py.add_cog(Testing(py))
Вот наконец можно снова пробовать запустить бота! Запустился? Идем дальше!
Напишем простую функцию
hello
:Код в этом файле должен сейчас выглядеть вот так.
Python:
from discord.ext import commands
class Testing(commands.Cog):
def __init__(self, py):
self.py = py
@commands.command()
async def hello(self, ctx):
await ctx.send('Hi!')
def setup(py):
py.add_cog(Testing(py))

Замечательно! Наш бот откликается на команды.
Давайте под конец заставим его откликаться на наши сообщения в чате:
Python:
from discord.ext import commands
class Testing(commands.Cog):
def __init__(self, py):
self.py = py
@commands.Cog.listener()
async def on_message(self, message):
await message.channel.send('Ты написал сообщение!')
def setup(py):
py.add_cog(Testing(py))

а все потому, что он откликается и на свое же сообщение. Чтобы этого избежать, добавим одно условие:
Python:
@commands.Cog.listener()
async def on_message(self, message):
if message.author.bot:
return
await message.channel.send('Ты написал сообщение!')
Думаю на этом можно закончить, может в некоторых местах я не понятно объяснил - не бойтесь спрашивать.
Всем удачи, всем пока!