【问题标题】:Getting Member of a discord server given server id获取给定服务器 ID 的不和谐服务器的成员
【发布时间】:2018-08-05 21:50:39
【问题描述】:

我想创建一个给定服务器 ID 的脚本,它应该返回该不和谐服务器的所有成员。 并给定用户身份验证令牌,它应该检查他是否是该服务器的成员。

我一直在寻找如何做到这一点,但徒劳无功! 我已经尝试了这 3 个问题,但它们没有给我任何关于我想要做什么的信息。

Question 1

Question 2

Question 3

这是我根据文档和入门教程尝试过的:

import discord
import asyncio
import os


client = discord.Client()
email  = os.getenv('Email')
password = os.getenv('Password')
server = discord.Server(id='416940353564704768')
@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')
    print('get all channel a client belong to ')
    if server.members:
        for member in server.members:
            print('name{}'.format(member.user.name) )
    else:
        print('any')

client.run(email, password)

但它总是打印任何内容。 任何帮助都将不胜感激,看起来我错过了关于不和谐如何工作的一些东西。

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:

    需要指出的几点:

    • 您需要从客户端获取服务器。你不能只做discord.Server(id="111111")。相反,请使用 get_server 方法。 client.get_server(id="11111").

    • get_server 方法放入on_ready 事件中。这可确保client 已连接到 discord 并已收到其服务器列表和所有其他数据。

    • Member 对象只是User 的子类;因此,您不能使用Member.user.name,因为MemberUser 都没有user 属性。你只需要Member.name

    • 最后,我不建议您使用自我机器人。也就是说,使用您自己的不和谐帐户,就好像它是一个机器人一样。您应该使用带有其令牌的实际机器人帐户。

    最终,您的代码应如下所示。

    import discord
    import asyncio
    import os
    
    client = discord.Client()
    email  = os.getenv('Email')
    password = os.getenv('Password')
    
    @client.event
    async def on_ready():
        server = client.get_server(id="416940353564704768")
        print('Logged in as')
        print(client.user.name)
        print(client.user.id)
        print('------')
        print('get all channel a client belong to ')
        if server:
            for member in server.members:
                print('name: {}'.format(member.name) )
        else:
            print('any')
    
    client.run(email, password)
    

    至于您的第二个问题,我不确定您所说的“给定用户身份验证令牌,它应该检查他是否是该服务器的成员。”。如果您获得了他们的登录令牌,我不完全知道您将如何使用它来检查他们是否在服务器中而不登录该帐户。如果您确实计划登录该帐户,我相信您需要在单独的脚本中执行此操作。但是,您可以轻松检查登录的客户端是否在服务器中:

    @client.event
    async def on_ready():
        server = discord.utils.get(client.servers, id="416940353564704768")
        print('Logged in as')
        print(client.user.name)
        print(client.user.id)
        print('------')
    
        if server:
            print("Client is a member of: {}".format(server.name))
        else:
            print("Client is not a member")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      相关资源
      最近更新 更多