【问题标题】:Discord Selfbot cant get all members, just part of itDiscord Selfbot 无法获得所有成员,只是其中的一部分
【发布时间】:2021-05-30 10:35:27
【问题描述】:

嘿,我试图让所有用户都在一个特定的指南中,我得到了部分用户,而不是所有用户,为什么?像这样所以请帮忙告诉我不和谐规则,因为我很了解,这是我做的代码,

import discord
import asyncio

intents = discord.Intents(messages=True, guilds=True, members=True)

client = discord.Client(intents=intents)


token = ""



@client.event
async def on_ready():
    print("Bot Is Ready!")
    guild = client.get_guild(328154277111398403)
    for member in guild.members:
        print(member)
        await asyncio.sleep(0.1)




client.run(token, bot=False)

【问题讨论】:

  • 服务器有多少成员?对我来说一切正常。
  • 我在多个服务器上尝试过,它只是打印了我的一部分

标签: python discord.py


【解决方案1】:

在 selfbots/userbots 的上下文中,discord.py 实际上并没有能力获取成员列表(或者,至少是其中的重要部分),因此不适合这项任务。相反,您要么必须使用不同的库,要么编写自己的解决方案。继续阅读一些代码:)

代码:
具有此支持的 python 库是discum
以下是使用 discum 获取成员列表所需的最少代码量:

import discum
bot = discum.Client(token='blah blah blah')

@bot.gateway.command
def helloworld(resp):
    if resp.event.ready_supplemental: 
        bot.gateway.fetchMembers("GUILD_ID_HERE", "CHANNEL_ID_HERE")

bot.gateway.run()

这是另一个创建名为 get_members 的函数的示例,该函数返回成员列表:https://github.com/Merubokkusu/Discord-S.C.U.M/blob/master/examples/gettingGuildMembers.py

还有更多示例: https://github.com/Merubokkusu/Discord-S.C.U.M/blob/master/docs/fetchingGuildMembers.md

它是如何工作的?
由于我们不能像机器人帐户那样请求成员列表,因此我们需要利用成员列表(是的,你在去公会时看到的右侧的成员侧边栏)。我们需要逐条阅读整篇文章。

基本上它是如何完成的,客户首先订阅公会频道中的成员事件(Luna 在她的非官方 Discord 文档中对此进行了一些讨论,但遗漏了很多)。然后,当用户滚动成员列表时,会发送更多惰性请求来获取成员列表的每个块。这就是 discum 中发生的情况:发送延迟请求,直到获取整个成员列表。 Here's some more info.

【讨论】:

    猜你喜欢
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2021-03-04
    • 2021-01-22
    • 2021-07-05
    • 2021-02-15
    • 1970-01-01
    相关资源
    最近更新 更多