【发布时间】: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