Python Discord OAuth2 - Guild.Join(加入公会)
Posted
技术标签:
【中文标题】Python Discord OAuth2 - Guild.Join(加入公会)【英文标题】:Python Discord OAuth2 - Guild.Join (Joining a Guild) 【发布时间】:2020-12-04 22:15:37 【问题描述】:您好,我正在尝试“使用 Discord 进行授权”,自动将用户加入我的公会。
我正在运行一个处理所有这些的Flask
应用程序。
到目前为止,这是我的代码:
def add_to_guild(access_token, userID, guildID):
url = f"Oauth.discord_api_url/guilds/guildID/members/userID"
headers =
"Authorization" : f"Bearer access_token"
response = requests.post(url=url, headers=headers)
print(response.text)
但是这不起作用。我收到一条错误消息:
"message": "405: Method Not Allowed", "code": 0
在 OAuth2 文档中,它说如果用户成功加入,我会收到 201
的响应,如果用户已经在公会中,我会收到 204
的响应。
更新 1:
我将方法更改为requests.get
,现在收到此错误:
"message": "401: Unauthorized", "code": 0
更新 2: 我创建了一个 Bot,邀请它加入我的不和谐公会,并成功地获得了有关我在公会中的用户的一些信息。但是一旦我离开并尝试再次运行链接,我得到了这个错误
"message": "Unknown Member", "code": 10007
更新 3: 我将方法更改为 PUT,现在收到错误请求
def add_to_guild(access_token, userID):
url = f"Oauth.discord_api_url/guilds/guildid i cant show/members/userID"
botToken = "cant show also"
headers =
"Authorization" : f"Bot botToken",
'Content-Type': 'application/json'
response = requests.put(url=url, headers=headers)
print(response.text)
【问题讨论】:
【参考方案1】:要添加成员,您应该使用requests.put()
,并且Guilds Auth标头需要是Bot
令牌,因此更改为:
headers =
"Authorization" : f"Bot access_token"
并确保您传递的是 Bot 令牌。更多信息:https://discord.com/developers/docs/reference
Authorization 标头必须是 Bot 令牌(属于同一 用于授权的应用程序),并且机器人必须是 拥有 CREATE_INSTANT_INVITE 权限的公会。
要获取成员,您可以使用不带 bot
标头的 requests.get()
。
【讨论】:
所以你是说我必须制作一个 Bot 并且它必须是我要添加成员的公会的成员? 你能看看我帖子的更新 2。我刚刚更新了它 你点击链接阅读了吗:Using a bot token gained by registering a bot, for more information on bots see bots vs user accounts.
相信我。我到处都看过。它不起作用。我正在尝试将用户添加到公会,但无法获取有关该公会中用户的详细信息:/
要添加成员,请使用 requests.put()
和 bot
header。见编辑。链接中的文档非常清楚。【参考方案2】:
更新 3 put() 是要走的路 但是,您仍然缺少 JSON 有效负载,该负载必须包含从代码授权的令牌交换收到的用户访问令牌。
data =
"access_token" : access_token
然后通过将数据传递给 json 来触发您的请求,所以
response = requests.put(url=url, json=data, headers=headers)
print(response.json)
【讨论】:
以上是关于Python Discord OAuth2 - Guild.Join(加入公会)的主要内容,如果未能解决你的问题,请参考以下文章
Discord API - 传回生成的 OAuth2 代码的随机“无效代码”错误