Как подсчитывать кол-во участников, эмодзи и каналов со всех серверов на которых состоит бот? (discord.py)
Как это реализовать, так чтобы оно ещё и обновлялось при добавлении эмодзи, людей, и каналов?
Ответы (1 шт):
Получаем список всех серверов, где есть бот: bot.guilds
Получаем список участников конкретного сервера: guild.members
Получаем список эмоджи сервера: guild.emojis
Получаем список каналов сервера: guild.channels
Проверить, голосовой канал или текстовый можно через его атрибут type.
Текстовый канал - discord.ChannelType.text, Голосовой - discord.ChannelType.voice
Получить информацию о создании нового канала можно при помощи события on_guild_channel_create(channel)
Получить информацию о подключении нового участника можно при помощи события on_member_join(member)
Получить информацию о создании нового emoji вроде бы как нельзя...
Далее выводим список нужно инфы через цикл for
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix='!', intents = discord.Intents.all())
@bot.event
async def on_ready():
number = 0
for guild in bot.guilds:
number += 1
print(f'{number}. {guild.name}')
print('Участники:')
for member in guild.members:
print(f' {member.name}')
print('Каналы:')
voice = []; text = []
for channel in guild.channels:
if channel.type != discord.ChannelType.category:
if channel.type == discord.ChannelType.text: text.append(channel)
if channel.type == discord.ChannelType.voice: voice.append(channel)
print(' Текстовые:')
for channel in text:
print(f' {channel}')
print(' Голосовые:')
for channel in voice:
print(f' {channel}')
print('Эмоджи:')
for emoji in guild.emojis:
print(f' {emoji.name}')
print(f'\n{"="*60}\n')
@bot.event
async def on_guild_channel_create(channel):
print(f'На сервере {channel.guild} создали новый канал: {channel.name}')
@bot.event
async def on_member_join(member):
print(f'На сервер {member.guild} зашел новый пользователь: {member.name}')
bot.run(TOKEN)
Не забудьте указать токен!