Подтвердить что ты не робот

Присоединение к серверу с API-интерфейсом Discord Python

Я пытаюсь настроить босс-споры с помощью python. У меня уже существовавший сервер диссонанса, который я бы хотел, чтобы бот присоединился, но у меня, похоже, есть медведь времени, чтобы заставить его присоединиться. Я использую discord.py 0.10.0 и python 3.5.1. Здесь мой код:

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')

Обратите внимание, что это по существу основной discord.py script, как указано на странице github. Тем не менее, я не могу понять, как это действительно присоединиться к моему серверу. При вставке этой строки в функцию on_ready:

server = await client.accept_invite('instantinvitecode')

с заменой instantinvitecode на мой фактический код мгновенного приглашения (я пробовал как discord.gg/code, так и код), я получаю discord.errors.Forbidden: FORBIDDEN (status code: 403): Bots cannot use this endpoint. Обратите внимание, что вход в систему действительно работает - я получаю вывод относительно моего имени пользователя и идентификатора.

Также обратите внимание, что я зарегистрирован в API-интерфейсе discord и зарегистрирован как бот, который является токеном, который я использую.

4b9b3361

Ответ 1

У меня были проблемы с этим. Что вам нужно сделать:

Теперь ваш бот будет членом сервера и будет отвечать на команды, которые вы ему даете. Ex.! test в коде, который вы указали.

Ответ 2

Я предлагаю редактировать код следующим образом:

    @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('------')

Я думаю, что это лучшее и простое решение. Это работает для меня.