Гайд #1 | Курс "Бот дискорд на python" | Ивенты, команды | disnake

Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,595
Реакции[?]
603
Поинты[?]
44K
Зачем в bot.py держать какие-то каллбеки?
зачем вообще всего бота держать в bot.py..

у него уже коллбеки там валяются (в апи библиотеки что он использует они называются eventами)..... ваш вопрос в чём заключается конкретно??
 
аоууеоооы
Пользователь
Статус
Оффлайн
Регистрация
22 Сен 2020
Сообщения
67
Реакции[?]
33
Поинты[?]
2K
Бедняга же расстроится, рассказал что знает, а тут такое ему пишут. Я конечно тоже понимаю, что гайд говна, но можно было чуть вежливо ответить.
А так браток хорош развеивайся и используй лучше обычную библиотеку discord.py, так как она, думаю, надежнее)
я вообще с discord.py перешел на диснейк недавно.
я располагаю к любой критике, только блять конкретной

неа.

конфиг файл с апи токеном??? ахахах найс

конфиг файл с .py разрешением потому что тебе лень парсить ямл/томл? ахахах найс
доебался основательно, особенно в гайде для новичков

зачем вообще всего бота держать в bot.py..
затем, это 1 часть блять, ты бы начало прочитал повнимательнее
А у вас тоже ctx это disnake.Message, а не disnake.ext.commands.Context
сорян, мой проёб)
 
Пользователь
Статус
Оффлайн
Регистрация
28 Фев 2019
Сообщения
650
Реакции[?]
141
Поинты[?]
30K
зачем вообще всего бота держать в bot.py..

у него уже коллбеки там валяются (в апи библиотеки что он использует они называются eventами)..... ваш вопрос в чём заключается конкретно??
за 2 года моей практики разработки ботов, я еще никогда не импортировал ивенты ._., да и к тому же, он написал что будет часть про коги
Ещё раз всем хай, это первый (ну получается второй) гайд в данном курсе:

#0 | Подготовка (установка python/disnake, создание бота) (ссылка)
#1 | Ивенты, команды | данный этап
#2 | Слэш-команды, обработка ошибок
#3 | Разделение кода (cogs)
#4 | Кнопки, выпадающие меню
#5 | Хостинг бота на сервере

Курс спонсирован напитком экстра-ситро :roflanEbalo:
Просьба писать код вдумчиво, не просто копипастить.
Моя цель - чтобы те, кто ничего незнает, хоть чему-нибудь научились.

1. Начинаем писать бота
Создайте 2 файла:
bot.py - наш основной файл с ботом
config.py - файл с конфигурацией (токен, префикс и т.п.)
Для того чтобы начать писать команды или ивенты, надо написать базовый код:

>> bot.py:
1. Импортируем библиотеку disnake и commands
import disnake
from disnake.ext import commands

2. Сделаем переменную с нашим ботом:
Мы можем использовать disnake.Client:
bot = disnake.Client(intents=disnake.Intents.all())
Но я буду использовать commands.Bot
(он принимает такие же параметры, как Client):
bot = commands.Bot(intents=disnake.Intents.all(), command_prefix=config["prefix"])

Можно ещё импортировать из disnake Intents, чтобы получилось покрасивее
Python:
from disnake import Intents # импортируем Intents
bot = commands.Bot(intents=Intents.all(), command_prefix=config["prefix"]) # вместо disnake.Intents.all() - Intents.all()
Делайте как хотите

Также если вы работаете в Visual Studio Code, PyCharm (и других), можно посмотреть
какие аргументы принимает та или иная функция - просто наведитесь на неё курсором
Посмотреть вложение 247749
кстати если же по твоему гайду смотреть то можно увидеть в объекте клиента и статус и активность1684354572525.png
 
Новичок
Статус
Оффлайн
Регистрация
14 Ноя 2022
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Ещё раз всем хай, это первый (ну получается второй) гайд в данном курсе:

#0 | Подготовка (установка python/disnake, создание бота) (ссылка)
#1 | Ивенты, команды | данный этап
#2 | Слэш-команды, обработка ошибок
#3 | Разделение кода (cogs)
#4 | Кнопки, выпадающие меню
#5 | Хостинг бота на сервере

Курс спонсирован напитком экстра-ситро :roflanEbalo:
Просьба писать код вдумчиво, не просто копипастить.
Моя цель - чтобы те, кто ничего незнает, хоть чему-нибудь научились.

1. Начинаем писать бота
Создайте 2 файла:
bot.py - наш основной файл с ботом
config.py - файл с конфигурацией (токен, префикс и т.п.)
Для того чтобы начать писать команды или ивенты, надо написать базовый код:

>> bot.py:
1. Импортируем библиотеку disnake и commands
import disnake
from disnake.ext import commands

2. Сделаем переменную с нашим ботом:
Мы можем использовать disnake.Client:
bot = disnake.Client(intents=disnake.Intents.all())
Но я буду использовать commands.Bot
(он принимает такие же параметры, как Client):
bot = commands.Bot(intents=disnake.Intents.all(), command_prefix=config["prefix"])

Можно ещё импортировать из disnake Intents, чтобы получилось покрасивее
Python:
from disnake import Intents # импортируем Intents
bot = commands.Bot(intents=Intents.all(), command_prefix=config["prefix"]) # вместо disnake.Intents.all() - Intents.all()
Делайте как хотите

Также если вы работаете в Visual Studio Code, PyCharm (и других), можно посмотреть
какие аргументы принимает та или иная функция - просто наведитесь на неё курсором
Посмотреть вложение 247749
3. Вставляете ниже запуск нашего бота:
bot.run(config["token"])

>> config.py:
Чтобы наш config["token"] выдавал наш токен и config["prefix"] выдавал наш префикс нам нужно создать конфиг:
1. Открываем config.py
2.
Пишем в нём:
config.py:
config = {
    'token': 'TOKEN', # токен из #0 гайда
    'prefix': '!' # наш префикс
}
Далее вы можете добавлять свои переменные и вызывать их вот так: config["prefix"]
3. В bot.py пишем рядом с нашими импортами: from config import config
Это позволит использовать переменные config в bot.py


После данного этапа у нас должно получится примерно так:
Посмотреть вложение 247751

2. Ивенты
Если вы хотите автоматически отслеживать те или иные действия на вашем сервере (кто на него зашёл, кого забанили, кто зашёл в определенный войс), то нам нужны ивенты.
Их существует множество, все они есть в документации -
Пожалуйста, авторизуйтесь для просмотра ссылки.

Мы разберём три ивента - on_ready, on_member_ban, on_member_join:

1. on_ready:
Данный ивент вызывается когда бот полностью запускается, мы будем использовать его чтобы поставить какой-нибудь смешной статус и вывести сообщение в консоль:

Python:
@bot.event
async def on_ready():
    await bot.change_presence(status=disnake.Status.online, activity=disnake.Game("ебашит гайды"))
    print(f"{bot.user.name} logged in.")
Запускаем нашего бота и получается примерно так:
Посмотреть вложение 247752
Вы можете менять статус и активность, все доступные статусы и активности есть тут -
Пожалуйста, авторизуйтесь для просмотра ссылки.
,
Пожалуйста, авторизуйтесь для просмотра ссылки.

Вот код который ставит "Не беспокоить" и Слушает пользователей:
await bot.change_presence(status=disnake.Status.do_not_disturb, activity=disnake.Activity(type=disnake.ActivityType.listening, name="пользователей")
Пожалуйста, авторизуйтесь для просмотра ссылки.

Также можно подключить там какую-нибудь ДБ, чтобы потом с ней взаимодействовать (для примера).
2. on_member_ban:
Данный ивент вызывается когда пользователя банят (не выгоняют), мы будем использовать его чтобы написать в определенный канал, что пользователь забанен.
Он отправляет объект сервера и пользователя - guild и user, guild - сервер в котором пользователя забанили и user - пользователь которого забанили.
Мы будем использовать только user.
Для нахождения канала по ID используем метод get_channel(id)
Python:
@bot.event
async def on_member_ban(guild:disnake.Guild, user: disnake.Member):
    channel = await bot.get_channel(1107292203912544338) # получение канала #баны
    await channel.send(f"Пользователь {user.name}#{user.discriminator} был забанен.") # вывод сообщения о бане
Можно также вывести в виде embed:
Python:
@bot.event
async def on_member_ban(guild:disnake.Guild, user: disnake.Member):
    channel = await bot.get_channel(1107292203912544338) # получение канала #баны
    emb = disnake.Embed(title="Ещё один бан", description=f"Пользователь {user.name}#{user.discriminator} был забанен") #создание embed
    await channel.send(embed=emb) # вывод embed'a в чат
Можно кастомизировать по своему
Сообщение при бане -
Пожалуйста, авторизуйтесь для просмотра ссылки.
3. on_member_join:
Данный ивент вызывается, когда пользователь заходит на наш сервер, мы будем использовать его чтобы написать в определенный канал, что пользователь присоединился к нам.
Он отправляет объект пользователя - user.
Для нахождения канала по ID используем метод get_channel(id)
Python:
@bot.event
async def on_member_join(user: disnake.Member):
    channel = await bot.get_channel(1107267042865848351) # получение канала #приглашения
    await channel.send(f"{user.mention} присоединился к нам!") # отправка сообщения
Можно вывести в embed, как в on_member_ban и сделать также с методом on_member_remove - это когда пользователь выходит с нашего сервера.
Сообщение при подключении пользователя -
Пожалуйста, авторизуйтесь для просмотра ссылки.
Для получения ID нужно включить в настройках: Настройки -> Расширенные -> Режим разработчика, потом ЛКМ по каналу -> Копировать ID канала

3. Команды
Мы будем рассматривать слеш-команды в следующем гайде, а пока сделаем команды как в старые добрые, с помощью префикса
Мы сделаем команду say(пишет ваш текст, который вы написали в аргументах), ban и kick

1. say
Данная команда напишет ваш текст, например, у вас есть канал в котором вы хотите писать от имени бота.
Python:
@bot.command()
async def say(ctx: disnake.Message, *, text): # получение текста, который вы напишите
    await ctx.message.delete() # удаление сообщения
    await ctx.send(text) # отправка сообщения
Вывод:
Пожалуйста, авторизуйтесь для просмотра ссылки.
2. ban и kick
Данная команда забанит/кикнет пользователя, которого вы упомяните:
Python:
@bot.command()
async def kick(ctx: disnake.Message, member: disnake.Member):
    await ctx.message.delete() # удаление сообщения
    await member.kick()# кик пользователя
    ms = await ctx.send(f"{member.display_name} был кикнут с сервера.") # отправка сообщения
    await asyncio.sleep(3) # ожидание 3 секунды
    await ms.delete() # удаление сообщения

@bot.command()
async def ban(ctx: disnake.Message, member: disnake.Member):
    await ctx.message.delete() # удаление сообщения
    await member.ban() # бан пользователя
    ms = await ctx.send(f"{member.display_name} был забанен на сервере.")# отправка сообщения
    await asyncio.sleep(3) # ожидание 3 секунды
    await ms.delete() # удаление сообщения
Для работы asyncio.sleep(3) импортируйте asyncio -> import asyncio или добавьте к disnake import disnake, asyncio
4. Запуск
Можно запустить из visual studio code, если вы там пишите бота,
Пожалуйста, авторизуйтесь для просмотра ссылки.

Или сделать start.bat в папке с bot.py cо следующим кодом:
Код:
@echo off
python bot.py
pause>nul
и открыть его.
На этом всё, делайте своих ботов.
Для связи: aristocratos#4840, только писать
Профессионалы могут указать на мои ошибки)
Спасибо, скоро увидимся :CoolCat:
А где продолжение?
 
Начинающий
Статус
Оффлайн
Регистрация
20 Май 2020
Сообщения
84
Реакции[?]
3
Поинты[?]
0
лучше с самого начала использовать коги создаем папку cogs и туда уже потихоньку помаленьку добавляем наши коги

Python:
import disnake
from disnake.ext import commands
import os

intents = disnake.Intents.all()
bot = commands.Bot(command_prefix="!", intents=intents, test_guilds=[1205775275896602634])


@bot.event
async def on_ready():
    print(f'Бот запущен {bot.user} (ID: {bot.user.id})')


for file in os.listdir("./cogs"):
    if file.endswith(".py"):
        bot.load_extension(f"cogs.{file[:-3]}")


bot.run('ваштокен')
 
Новичок
Статус
Оффлайн
Регистрация
9 Фев 2024
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Ещё раз всем хай, это первый (ну получается второй) гайд в данном курсе:

#0 | Подготовка (установка python/disnake, создание бота) (ссылка)
#1 | Ивенты, команды | данный этап
#2 | Слэш-команды, обработка ошибок
#3 | Разделение кода (cogs)
#4 | Кнопки, выпадающие меню
#5 | Хостинг бота на сервере

Курс спонсирован напитком экстра-ситро :roflanEbalo:
Просьба писать код вдумчиво, не просто копипастить.
Моя цель - чтобы те, кто ничего незнает, хоть чему-нибудь научились.

1. Начинаем писать бота
Создайте 2 файла:
bot.py - наш основной файл с ботом
config.py - файл с конфигурацией (токен, префикс и т.п.)
Для того чтобы начать писать команды или ивенты, надо написать базовый код:

>> bot.py:
1. Импортируем библиотеку disnake и commands
import disnake
from disnake.ext import commands

2. Сделаем переменную с нашим ботом:
Мы можем использовать disnake.Client:
bot = disnake.Client(intents=disnake.Intents.all())
Но я буду использовать commands.Bot
(он принимает такие же параметры, как Client):
bot = commands.Bot(intents=disnake.Intents.all(), command_prefix=config["prefix"])

Можно ещё импортировать из disnake Intents, чтобы получилось покрасивее
Python:
from disnake import Intents # импортируем Intents
bot = commands.Bot(intents=Intents.all(), command_prefix=config["prefix"]) # вместо disnake.Intents.all() - Intents.all()
Делайте как хотите

Также если вы работаете в Visual Studio Code, PyCharm (и других), можно посмотреть
какие аргументы принимает та или иная функция - просто наведитесь на неё курсором
Посмотреть вложение 247749
3. Вставляете ниже запуск нашего бота:
bot.run(config["token"])

>> config.py:
Чтобы наш config["token"] выдавал наш токен и config["prefix"] выдавал наш префикс нам нужно создать конфиг:
1. Открываем config.py
2.
Пишем в нём:
config.py:
config = {
    'token': 'TOKEN', # токен из #0 гайда
    'prefix': '!' # наш префикс
}
Далее вы можете добавлять свои переменные и вызывать их вот так: config["prefix"]
3. В bot.py пишем рядом с нашими импортами: from config import config
Это позволит использовать переменные config в bot.py


После данного этапа у нас должно получится примерно так:
Посмотреть вложение 247751

2. Ивенты
Если вы хотите автоматически отслеживать те или иные действия на вашем сервере (кто на него зашёл, кого забанили, кто зашёл в определенный войс), то нам нужны ивенты.
Их существует множество, все они есть в документации -
Пожалуйста, авторизуйтесь для просмотра ссылки.

Мы разберём три ивента - on_ready, on_member_ban, on_member_join:

1. on_ready:
Данный ивент вызывается когда бот полностью запускается, мы будем использовать его чтобы поставить какой-нибудь смешной статус и вывести сообщение в консоль:

Python:
@bot.event
async def on_ready():
    await bot.change_presence(status=disnake.Status.online, activity=disnake.Game("ебашит гайды"))
    print(f"{bot.user.name} logged in.")
Запускаем нашего бота и получается примерно так:
Посмотреть вложение 247752
Вы можете менять статус и активность, все доступные статусы и активности есть тут -
Пожалуйста, авторизуйтесь для просмотра ссылки.
,
Пожалуйста, авторизуйтесь для просмотра ссылки.

Вот код который ставит "Не беспокоить" и Слушает пользователей:
await bot.change_presence(status=disnake.Status.do_not_disturb, activity=disnake.Activity(type=disnake.ActivityType.listening, name="пользователей")
Пожалуйста, авторизуйтесь для просмотра ссылки.

Также можно подключить там какую-нибудь ДБ, чтобы потом с ней взаимодействовать (для примера).
2. on_member_ban:
Данный ивент вызывается когда пользователя банят (не выгоняют), мы будем использовать его чтобы написать в определенный канал, что пользователь забанен.
Он отправляет объект сервера и пользователя - guild и user, guild - сервер в котором пользователя забанили и user - пользователь которого забанили.
Мы будем использовать только user.
Для нахождения канала по ID используем метод get_channel(id)
Python:
@bot.event
async def on_member_ban(guild:disnake.Guild, user: disnake.Member):
    channel = await bot.get_channel(1107292203912544338) # получение канала #баны
    await channel.send(f"Пользователь {user.name}#{user.discriminator} был забанен.") # вывод сообщения о бане
Можно также вывести в виде embed:
Python:
@bot.event
async def on_member_ban(guild:disnake.Guild, user: disnake.Member):
    channel = await bot.get_channel(1107292203912544338) # получение канала #баны
    emb = disnake.Embed(title="Ещё один бан", description=f"Пользователь {user.name}#{user.discriminator} был забанен") #создание embed
    await channel.send(embed=emb) # вывод embed'a в чат
Можно кастомизировать по своему
Сообщение при бане -
Пожалуйста, авторизуйтесь для просмотра ссылки.
3. on_member_join:
Данный ивент вызывается, когда пользователь заходит на наш сервер, мы будем использовать его чтобы написать в определенный канал, что пользователь присоединился к нам.
Он отправляет объект пользователя - user.
Для нахождения канала по ID используем метод get_channel(id)
Python:
@bot.event
async def on_member_join(user: disnake.Member):
    channel = await bot.get_channel(1107267042865848351) # получение канала #приглашения
    await channel.send(f"{user.mention} присоединился к нам!") # отправка сообщения
Можно вывести в embed, как в on_member_ban и сделать также с методом on_member_remove - это когда пользователь выходит с нашего сервера.
Сообщение при подключении пользователя -
Пожалуйста, авторизуйтесь для просмотра ссылки.
Для получения ID нужно включить в настройках: Настройки -> Расширенные -> Режим разработчика, потом ЛКМ по каналу -> Копировать ID канала

3. Команды
Мы будем рассматривать слеш-команды в следующем гайде, а пока сделаем команды как в старые добрые, с помощью префикса
Мы сделаем команду say(пишет ваш текст, который вы написали в аргументах), ban и kick

1. say
Данная команда напишет ваш текст, например, у вас есть канал в котором вы хотите писать от имени бота.
Python:
@bot.command()
async def say(ctx: disnake.Message, *, text): # получение текста, который вы напишите
    await ctx.message.delete() # удаление сообщения
    await ctx.send(text) # отправка сообщения
Вывод:
Пожалуйста, авторизуйтесь для просмотра ссылки.
2. ban и kick
Данная команда забанит/кикнет пользователя, которого вы упомяните:
Python:
@bot.command()
async def kick(ctx: disnake.Message, member: disnake.Member):
    await ctx.message.delete() # удаление сообщения
    await member.kick()# кик пользователя
    ms = await ctx.send(f"{member.display_name} был кикнут с сервера.") # отправка сообщения
    await asyncio.sleep(3) # ожидание 3 секунды
    await ms.delete() # удаление сообщения

@bot.command()
async def ban(ctx: disnake.Message, member: disnake.Member):
    await ctx.message.delete() # удаление сообщения
    await member.ban() # бан пользователя
    ms = await ctx.send(f"{member.display_name} был забанен на сервере.")# отправка сообщения
    await asyncio.sleep(3) # ожидание 3 секунды
    await ms.delete() # удаление сообщения
Для работы asyncio.sleep(3) импортируйте asyncio -> import asyncio или добавьте к disnake import disnake, asyncio
4. Запуск
Можно запустить из visual studio code, если вы там пишите бота,
Пожалуйста, авторизуйтесь для просмотра ссылки.

Или сделать start.bat в папке с bot.py cо следующим кодом:
Код:
@echo off
python bot.py
pause>nul
и открыть его.
На этом всё, делайте своих ботов.
Для связи: aristocratos#4840, только писать
Профессионалы могут указать на мои ошибки)
Спасибо, скоро увидимся :CoolCat:
Ещё раз всем хай, это первый (ну получается второй) гайд в данном курсе:

#0 | Подготовка (установка python/disnake, создание бота) (ссылка)
#1 | Ивенты, команды | данный этап
#2 | Слэш-команды, обработка ошибок
#3 | Разделение кода (cogs)
#4 | Кнопки, выпадающие меню
#5 | Хостинг бота на сервере

Курс спонсирован напитком экстра-ситро :roflanEbalo:
Просьба писать код вдумчиво, не просто копипастить.
Моя цель - чтобы те, кто ничего незнает, хоть чему-нибудь научились.

1. Начинаем писать бота
Создайте 2 файла:
bot.py - наш основной файл с ботом
config.py - файл с конфигурацией (токен, префикс и т.п.)
Для того чтобы начать писать команды или ивенты, надо написать базовый код:

>> bot.py:
1. Импортируем библиотеку disnake и commands
import disnake
from disnake.ext import commands

2. Сделаем переменную с нашим ботом:
Мы можем использовать disnake.Client:
bot = disnake.Client(intents=disnake.Intents.all())
Но я буду использовать commands.Bot
(он принимает такие же параметры, как Client):
bot = commands.Bot(intents=disnake.Intents.all(), command_prefix=config["prefix"])

Можно ещё импортировать из disnake Intents, чтобы получилось покрасивее
Python:
from disnake import Intents # импортируем Intents
bot = commands.Bot(intents=Intents.all(), command_prefix=config["prefix"]) # вместо disnake.Intents.all() - Intents.all()
Делайте как хотите

Также если вы работаете в Visual Studio Code, PyCharm (и других), можно посмотреть
какие аргументы принимает та или иная функция - просто наведитесь на неё курсором
Посмотреть вложение 247749
3. Вставляете ниже запуск нашего бота:
bot.run(config["token"])

>> config.py:
Чтобы наш config["token"] выдавал наш токен и config["prefix"] выдавал наш префикс нам нужно создать конфиг:
1. Открываем config.py
2.
Пишем в нём:
config.py:
config = {
    'token': 'TOKEN', # токен из #0 гайда
    'prefix': '!' # наш префикс
}
Далее вы можете добавлять свои переменные и вызывать их вот так: config["prefix"]
3. В bot.py пишем рядом с нашими импортами: from config import config
Это позволит использовать переменные config в bot.py


После данного этапа у нас должно получится примерно так:
Посмотреть вложение 247751

2. Ивенты
Если вы хотите автоматически отслеживать те или иные действия на вашем сервере (кто на него зашёл, кого забанили, кто зашёл в определенный войс), то нам нужны ивенты.
Их существует множество, все они есть в документации -
Пожалуйста, авторизуйтесь для просмотра ссылки.

Мы разберём три ивента - on_ready, on_member_ban, on_member_join:

1. on_ready:
Данный ивент вызывается когда бот полностью запускается, мы будем использовать его чтобы поставить какой-нибудь смешной статус и вывести сообщение в консоль:

Python:
@bot.event
async def on_ready():
    await bot.change_presence(status=disnake.Status.online, activity=disnake.Game("ебашит гайды"))
    print(f"{bot.user.name} logged in.")
Запускаем нашего бота и получается примерно так:
Посмотреть вложение 247752
Вы можете менять статус и активность, все доступные статусы и активности есть тут -
Пожалуйста, авторизуйтесь для просмотра ссылки.
,
Пожалуйста, авторизуйтесь для просмотра ссылки.

Вот код который ставит "Не беспокоить" и Слушает пользователей:
await bot.change_presence(status=disnake.Status.do_not_disturb, activity=disnake.Activity(type=disnake.ActivityType.listening, name="пользователей")
Пожалуйста, авторизуйтесь для просмотра ссылки.

Также можно подключить там какую-нибудь ДБ, чтобы потом с ней взаимодействовать (для примера).
2. on_member_ban:
Данный ивент вызывается когда пользователя банят (не выгоняют), мы будем использовать его чтобы написать в определенный канал, что пользователь забанен.
Он отправляет объект сервера и пользователя - guild и user, guild - сервер в котором пользователя забанили и user - пользователь которого забанили.
Мы будем использовать только user.
Для нахождения канала по ID используем метод get_channel(id)
Python:
@bot.event
async def on_member_ban(guild:disnake.Guild, user: disnake.Member):
    channel = await bot.get_channel(1107292203912544338) # получение канала #баны
    await channel.send(f"Пользователь {user.name}#{user.discriminator} был забанен.") # вывод сообщения о бане
Можно также вывести в виде embed:
Python:
@bot.event
async def on_member_ban(guild:disnake.Guild, user: disnake.Member):
    channel = await bot.get_channel(1107292203912544338) # получение канала #баны
    emb = disnake.Embed(title="Ещё один бан", description=f"Пользователь {user.name}#{user.discriminator} был забанен") #создание embed
    await channel.send(embed=emb) # вывод embed'a в чат
Можно кастомизировать по своему
Сообщение при бане -
Пожалуйста, авторизуйтесь для просмотра ссылки.
3. on_member_join:
Данный ивент вызывается, когда пользователь заходит на наш сервер, мы будем использовать его чтобы написать в определенный канал, что пользователь присоединился к нам.
Он отправляет объект пользователя - user.
Для нахождения канала по ID используем метод get_channel(id)
Python:
@bot.event
async def on_member_join(user: disnake.Member):
    channel = await bot.get_channel(1107267042865848351) # получение канала #приглашения
    await channel.send(f"{user.mention} присоединился к нам!") # отправка сообщения
Можно вывести в embed, как в on_member_ban и сделать также с методом on_member_remove - это когда пользователь выходит с нашего сервера.
Сообщение при подключении пользователя -
Пожалуйста, авторизуйтесь для просмотра ссылки.
Для получения ID нужно включить в настройках: Настройки -> Расширенные -> Режим разработчика, потом ЛКМ по каналу -> Копировать ID канала

3. Команды
Мы будем рассматривать слеш-команды в следующем гайде, а пока сделаем команды как в старые добрые, с помощью префикса
Мы сделаем команду say(пишет ваш текст, который вы написали в аргументах), ban и kick

1. say
Данная команда напишет ваш текст, например, у вас есть канал в котором вы хотите писать от имени бота.
Python:
@bot.command()
async def say(ctx: disnake.Message, *, text): # получение текста, который вы напишите
    await ctx.message.delete() # удаление сообщения
    await ctx.send(text) # отправка сообщения
Вывод:
Пожалуйста, авторизуйтесь для просмотра ссылки.
2. ban и kick
Данная команда забанит/кикнет пользователя, которого вы упомяните:
Python:
@bot.command()
async def kick(ctx: disnake.Message, member: disnake.Member):
    await ctx.message.delete() # удаление сообщения
    await member.kick()# кик пользователя
    ms = await ctx.send(f"{member.display_name} был кикнут с сервера.") # отправка сообщения
    await asyncio.sleep(3) # ожидание 3 секунды
    await ms.delete() # удаление сообщения

@bot.command()
async def ban(ctx: disnake.Message, member: disnake.Member):
    await ctx.message.delete() # удаление сообщения
    await member.ban() # бан пользователя
    ms = await ctx.send(f"{member.display_name} был забанен на сервере.")# отправка сообщения
    await asyncio.sleep(3) # ожидание 3 секунды
    await ms.delete() # удаление сообщения
Для работы asyncio.sleep(3) импортируйте asyncio -> import asyncio или добавьте к disnake import disnake, asyncio
4. Запуск
Можно запустить из visual studio code, если вы там пишите бота,
Пожалуйста, авторизуйтесь для просмотра ссылки.

Или сделать start.bat в папке с bot.py cо следующим кодом:
Код:
@echo off
python bot.py
pause>nul
и открыть его.
На этом всё, делайте своих ботов.
Для связи: aristocratos#4840, только писать
Профессионалы могут указать на мои ошибки)
Спасибо, скоро увидимся :CoolCat:
Привет, я делаю бота для дискорда на disnake и когда я попытался сделать так, чтобы при заходе человека на сервер бот писал ему в лс, но бот не понимает когда на сервер заходит пользователь. Вот код:


Код:
@bot.event
async def on_member_join(member):
print(member)
    await member.send(f"Hi {member.name}")
 
Начинающий
Статус
Оффлайн
Регистрация
20 Май 2020
Сообщения
84
Реакции[?]
3
Поинты[?]
0
Привет, я делаю бота для дискорда на disnake и когда я попытался сделать так, чтобы при заходе человека на сервер бот писал ему в лс, но бот не понимает когда на сервер заходит пользователь. Вот код:


Код:
@bot.event
async def on_member_join(member):
print(member)
    await member.send(f"Hi {member.name}")
полный код покажи или пробуй так

Python:
@bot.event
async def on_member_join(member):
    try:
        await member.send(f'Добро пожаловать на сервер, {member.name}!')
        print(f'Отправлено приветственное сообщение пользователю {member.name}.')
    except discord.errors.Forbidden:
        print(f'Не удалось отправить сообщение пользователю {member.name}.')
если ничего не вызывается при заходи на сервер в консоль то нужно смотреть весь код
 
Сверху Снизу