gpt4 book ai didi

python - 获取给定服务器 ID 的不和谐服务器的成员

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:16 25 4
gpt4 key购买 nike

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

我一直在寻找如何做到这一点,但徒劳无功!我已经尝试了这 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)

但它总是打印任何。任何帮助将不胜感激,看来我缺少有关 discord 工作原理的一些信息。

最佳答案

需要指出的几点:

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

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

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

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

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

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)

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

@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")

关于python - 获取给定服务器 ID 的不和谐服务器的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48988516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com