Discord — Как получить дату и время, когда участник присоединился к группе?

#python #discord #discum

Вопрос:

Для решения моей проблемы я в конечном итоге использовал библиотеку discom pip, но если есть какой-либо другой способ сделать то, что я хочу, я был бы рад предложениям.

Я хочу узнать, каковы даты, когда пользователь присоединился к определенной группе discord. Мне удалось получить все идентификаторы пользователей из группы, но документация для этой библиотеки настолько скудна, что у меня возникли проблемы с подключением имени пользователя и даты-времени. Я вижу, что это должно быть возможно, но я не могу понять это до конца.

Код, который у меня есть для идентификаторов, таков:

 import discum

bot = discum.Client(token="token")

def close_after_fetching(resp, guild_id):
    if bot.gateway.finishedMemberFetching(guild_id):
        lenmembersfetched = len(bot.gateway.session.guild(guild_id).members)
        print(str(lenmembersfetched) ' members fetched')
        bot.gateway.removeCommand({'function': close_after_fetching, 'params' :{'guild_id': guild_id}})
        bot.gateway.close()

def get_members(guild_id, channel_id):
    bot.gateway.fetchMembers(guild_id, channel_id, wait=1)
    bot.gateway.command({'function': close_after_fetching, 'params': {'guild_id': guild_id}})
    bot.gateway.run()
    bot.gateway.resetSession()
    return bot.gateway.session.guild(guild_id).members

members = get_members('guild_id', 'channel_id')
membersList = []

for memberID in members:
    membersList.append(memberID)
    print(memberID)
 

В итоге я получаю список всех идентификаторов участников, но мне нужно больше.
Кроме того, у меня есть подозрение, что список участников не полный. Может ли это быть правдой?
Я понимаю, что эта библиотека широко не используется, но любая помощь (особенно другие решения) была бы очень признательна.

решение

В итоге я использовал бота discord, чтобы получить список. Это гораздо проще и гораздо более документировано.Я все еще использовал python, но с библиотекой discord. «access_token» — это мой токен бота discord, и ответ помещается в файл .txt, потому что он может быть слишком большим для сообщения о разногласиях.

 import discord
import os
from io import BytesIO
import datetime

access_token= os.environ["ACCESS_TOKEN"]

intents = discord.Intents.default()
intents.members = True
client = discord.Client(intents=intents)


@client.event
async def on_ready():
  print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
  if message.author == client.user:
    return

  if message.content.startswith('!members'):
    userrole = message.author.top_role.name
    if userrole == "Admin" or userrole == "Moderators":
      memberList = ""
      username = ''
      dateJoined = ''
      guilds = client.guilds
      for guild in guilds:
        members = guild.members
        for member in members:
          if member.bot == False:
            username = member.name
            dateJoined = member.joined_at.strftime("%d-%m-%Y %H:%M:%S")                  
            memberList = memberList   username   ","   dateJoined   "n"

      as_bytes = map(str.encode, memberList)
      content = b"".join(as_bytes)
      await message.reply("Member List", file=discord.File(BytesIO(content), "members.txt"))         

client.run(access_token)