【问题标题】:如何加入服务器?
【发布时间】:2016-10-07 22:36:22
【问题描述】:

我正在尝试使用 python 设置一个不和谐的机器人。我有一个预先存在的不和谐服务器,我希望机器人加入,但我很难这样做。

import discord
import asyncio
import logging

logging.basicConfig(level=logging.INFO)

client = discord.Client()

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')
    print(client)


@client.event
async def on_message(message):
    print(message)
    if message.content.startswith('!test'):
        counter = 0
        tmp = await client.send_message(message.channel, 'Calculating messages...')
        async for log in client.logs_from(message.channel, limit=100):
            if log.author == message.author:
                counter += 1

        await client.edit_message(tmp, 'You have {} messages.'.format(counter))
    elif message.content.startswith('!sleep'):
        await asyncio.sleep(5)
        await client.send_message(message.channel, 'Done sleeping')

client.run('token')

这本质上是 GitHub 页面上给出的基本 discord.py 脚本。但是,我似乎无法弄清楚如何让它真正加入我的服务器。将此行插入on_ready 函数时:

server = await client.accept_invite('instant-invite-code')

将“instant-invite-code”替换为我的实际即时邀请码(我尝试了 discord.gg/code 和 code),我得到了

discord.errors.Forbidden: FORBIDDEN (status code: 403): Bots cannot use this endpoint

日志确实有效;我用我的用户名和 id 得到输出。我的机器人已使用 discord API 注册,并且我已经有一个令牌。

【问题讨论】:

  • 据我所知,您必须使用桌面应用程序或浏览器使用您的机器人帐户实际加入服务器。一旦你这样做了,机器人就会识别出它之前已经加入了它。
  • 所以,我确实尝试过这个 - 我登录了机器人被授权的帐户并加入了正确的服务器,但它似乎没有效果 - 它仍然没有加入服务器(client.servers 的值为 [])。
  • 我想知道我是否没有以机器人身份登录-我从帐户授权了机器人(这是生成令牌的地方),但我仍在登录 mac 客户端使用电子邮件和密码。
  • @Goodies - 有没有办法在给定机器人用户名/id/令牌的情况下在网络界面中实际登录机器人用户?
  • 我其实不确定。当我使用它时,它还处于起步阶段,实际上还没有创建机器人用户。我只是使用了一个普通帐户。

标签: python discord discord.py


【解决方案1】:

我也遇到了一些麻烦。你需要做的是:

  1. 转到Discord developer pages(如果尚未登录,请登录)。
  2. 使用要添加到频道的机器人转到应用程序。
  3. 复制客户端/应用程序 ID。
  4. 转到https://discordapp.com/oauth2/authorize?client_id=CLIENT_ID_GOES_HERE&scope=bot&permissions=0 Permissions can be calculated here。
  5. 选择服务器并点击授权。

您的机器人现在将成为服务器的成员,并将响应您给它的命令。前任。 !在你给出的代码中测试。

编辑:您现在可以使用权限链接 (1) 生成所需的整个 URL。

【讨论】:

  • 我在某个时候使用过它,即使我拥有服务器上的所有权限,它也不起作用。但是,当服务器的实际创建者这样做时,它工作得很好。知道这是为什么吗?
  • 您需要拥有管理服务器才能将机器人添加到服务器。这会阻止随机用户添加他们自己的机器人,当机器人帐户不存在时,这是一个问题。
【解决方案2】:

我问这个问题已经 4 年了,这就是我现在如何处理这个问题。

我使用https://discordapi.com/permissions.html,您只需在其中粘贴机器人的 ID(您可以在此处获取:https://discord.com/developers/applications),它还具有计算您想要的任何权限配置的好处。

如果你很懒,这对你来说也是一个不错的解决方案。

【讨论】:

    【解决方案3】:

    我建议像这样编辑代码:

        @client.event
    async def on_ready():
        print('Logged in as')
        print(client.user.name)
        print(client.user.id)
        print('Invite: https://discordapp.com/oauth2/authorize?client_id={}&scope=bot'.format(client.user.id))
        print('------')
    

    我认为这是最好和最简单的解决方案。它对我有用。

    编辑:Discord 实际上制作了自己的 OAuth2 url 生成器,所以使用它:https://discordapp.com/developers/tools/oauth2-url-generator

    【讨论】:

    • 不适用于在 Bot 和客户端 ID 合并之前创建的 bot。
    猜你喜欢
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 2022-01-05
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多