Как исправить, что бот discord.py, размещенный на Heroku, не выходит в сеть? - PullRequest
1 голос
/ 05 мая 2019

Я пытаюсь получить моего бота discord.py бесплатно, и я слышал, что Heroku - хороший вариант.Мой dyno работает отлично, и он включен, но при развертывании мой бот не выходит в интернет.У меня нет ошибок, оно говорит, что оно развернуто, но мой бот никогда не выходит в сеть.

Я попытался восстановить токен бота и вставить его в свое приложение Heroku, но он все равно не будет работать.

import discord
from discord.ext import commands
from discord.ext.commands import bot
import asyncio
import requests
import os

description = '''EchoBot by EchoNoahGaming'''
bot = commands.Bot(command_prefix='-', description=description)

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

@bot.command()
async def announcement(ctx, *, args):
    """Announcement command!"""
    embed=discord.Embed(title="Announcement", description=args, color=0x7700aa)
    embed.set_footer(text="By EchoNoahGaming")
    await ctx.send("@everyone", embed=embed)

client.run(str(os.environ.get('BOT_TOKEN')))

Это код бота.

Я ожидал, что бот появится в сети, потому что ошибок не было, но не было, и он остался в автономном режиме.

Код Procfile:

worker: python3 bot.py

Содержимое require.txt:

discord
asyncio

Если вам нужно что-то еще, сообщите мне.Ссылка на GitHub https://github.com/EchoNoahGaming/echobot/blob/master/, но я выложу здесь все файлы, чтобы было проще.

1 Ответ

1 голос
/ 05 мая 2019

Из обсуждения в комментариях OP и я выяснили, что пошло не так:

  1. В последней строке есть опечатка: client.run должно быть bot.run

  2. Файл require.txt следует изменить на

    discord.py
    requests
    

    Это связано с тем, что requests не является частью стандартной библиотеки Python, тогда как asyncio является частью стандартной библиотеки.

Устранение вышеуказанного, похоже, решило проблемы.


Вспомогательный обзор кода будет состоять в удалении избыточнойтакие строки, как

from discord.ext.commands import bot

(который в любом случае перезаписывается bot = Bot(...)).

Модули asyncio и requests не использовались в коде, но яЯ дам вам преимущество сомнения и предположим, что вы планируете использовать их.Если нет, удалите их из своего кода (и, если применимо, из файла require.txt).Это экономит время при сборке бота.

...