Задать вопрос
MinZeroMax
@MinZeroMax

Почему event on_member_join не работает?

Ошибок нету но когда покидаю сервер и захожу вновь то бот не реагирует на событие

visiting.py
from disnake import Embed
from database import add_user, get_user_by_id, update_user


def setup_visiting(bot, guild_id, chanel):
    print("Start")
    embed = Embed(
        title="Добро пожаловать на сервер!",
        description="Спасибо за присоединение к нашему сообществу!",
        color=0x00ff00  # Зеленый цвет
    )

    @bot.event
    async def on_member_join(member):
        # Проверка, что участник присоединился к указанному серверу
        print("Join")
        if member.guild.id == guild_id:
            # Добавление участника в базу данных
            add_user(member.id, member.name, 0)

            # Отправка приветственного сообщения
            try:
                await member.send(embed=embed,chanel=chanel)
            except Exception as e:
                print(f"Ошибка при отправке приветственного сообщения: {e}")

            # Вывод информации о участнике в консоль
            print(f"Участник {member.name} (ID: {member.id}) присоединился к серверу.")


main.py
import json

from disnake.ext import commands
from disnake import Intents
from commands import setup_commands
from events.visiting import setup_visiting
from cogs.chat.cog import CogChat

intents = Intents.all()

with open("configs/config.json") as f:
    config = json.load(f)

bot = commands.InteractionBot()

GUILD_ID = config['guild_id']
TOKEN = config['token']

setup_commands(bot, GUILD_ID)
setup_visiting(bot, GUILD_ID, "1233498806881095824")

bot.run(TOKEN)
  • Вопрос задан
  • 49 просмотров
Подписаться Средний Комментировать
Решения вопроса 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Вероятно на портале для разработчиков не включено соответствующее разрешение
1LCiuFF.png

В коде проблем нет, хотя он несколько мудреный. Если хочется структурировать события, для этого стоит использовать disnake.Client
import disnake

class MyClient(disnake.Client):
    async def on_member_join(self, member: disnake.Member):
        guild = member.guild
        if guild.system_channel:
            to_send = f"Welcome {member.mention} to {guild.name}!"
            await guild.system_channel.send(to_send)

    async def on_ready(self):
        print(f"Logged in as {self.user} (ID: {self.user.id})\n------")

intents = disnake.Intents.default()
intents.members = True

if __name__ == "__main__":
    client = MyClient(intents=intents)
    client.run(os.getenv("BOT_TOKEN"))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы