@Guerro69

Discord Bot как по событию on_member_join() получить точный ид сервера?

Пишу бота в дс, код состоит в том, что при событии on_member_join(member), исполняемый код брал ид сервера на котором произошло присоединение и с помощью функции обращался к базе данных, которая по ид сервера смотрела есть ли приветствие для пользователя, если оно есть, то бот отправит его пользователю, если же его нету, тогда просто проигнорирует, но вопрос в том, как в этом событии получить точный ид сервера, если эта функция принимает только один аргумент "member", bot.guilds or client.guilds не то.
Код:

TOKEN= 'Token'
p = '.'
bot = commands.Bot(command_prefix=p)
tag = 'Bot -'

def get_greeting(guild):
	connect = connection()
	try:
		with connect.cursor() as cursor:
			result = cursor.execute(f"SELECT * FROM `chats` WHERE gui={guild}")
			row = cursor.fetchone()
			if str(row['greeting']) != 'null':
				return 1, str(row['greeting'])
			else:
				return 0, ' '
	finally:
		connect.close()

@bot.event
async def on_member_join(member):
	rez, greeting = get_greeting(Сюды ид сервера)
	if rez == 1:
		await member.send(f"{member.mention}, приветствуем тебя на сервере.\n{greeting}")

bot.run(TOKEN)
  • Вопрос задан
  • 1260 просмотров
Решения вопроса 2
shurshur
@shurshur
Сисадмин, просто сисадмин...
member.guild.id
Ответ написан
Комментировать
@cython
Обращаясь к документации discord.py:
у экземпляра класса Member есть свойство guild, которое возвращает экземпляр класса Guild, у которого есть свойство id.
@bot.event
async def on_member_join(member):
  guild_id = member.guild.id
  rez, greeting = get_greeting(Сюды ид сервера)
  if rez == 1:
    await member.send(f"{member.mention}, приветствуем тебя на сервере.\n{greeting}")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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