Почему discord-бот выходит из онлайна?

import discord

from discord.ext import commands

TOKEN = '(здесь токен моего бота)'

bot = commands.Bot(command_prefix='!')

client = commands.Bot( command_prefix = '!')

#!help

@client.event

async def on_ready():

    print ( 'Bot has connected' )

@client.command( pass_context = True )

async def hello( ctx ):

    await ctx.send( 'Bot greets you.' )

    #Connect

@bot.command(pass_context=True)  

async def test(ctx, arg):
 
    await ctx.send(arg)  

bot.run(TOKEN)
  1. Бота очень сложно заставить появиться в онлайне, он «включается» только когда я запускаю файл с кодом, при закрытии файла он переходит в оффлайн. Каким образом можно сделать его независимым от меня?

  2. Несмотря на все то, что написано в коде, он не выполняет никаких команд. Есть ли какие-то ресурсы, где даны списки команд для бота с примерами кодов?


Ответы (1 шт):

Автор решения: denisnumb

1. Бот уходит в офлайн, потому что вы завершаете выполнение кода. Пока выполняется код - бот запущен и готов выполнять команды. Если вам нужно, чтобы бот оставался в онлайне, даже когда вы выключаете компьютер, то написанного бота нужно ставить на хостинг. Поищите сервисы в интернете. Это, естественно, не бесплатно.

2. Что касается выполнения команд, вы объявили в коде двух ботов. Одного с именем client, второго с именем bot. А по итогу запустили только второго: bot.run(TOKEN)

Строку client = commands.Bot( command_prefix = '!'), я бы посоветовал убрать вообще и, поскольку он у вас не используется, все @client в коде заменить на @bot.

Ну и наконец, почему же именно не работают команды. async def on_ready(): и async def hello( ctx ): у вас не вызываются, потому что, как я уже написал ранее, они привязаны к @client, которого вы не запускали. Если поменяете на @bot, то будут работать.

Для вызова функции вы указали префикс "!", в этой строке bot = commands.Bot(command_prefix='!'), соответственно вызов функции должен происходить следующим образом:

В чат пишете [Префикс][Название функции] [Аргемунты]. В вашем случае: !test проверка На что бот должен отправить в чат "проверка".

А вообще это вы должны были узнать из документации. Читайте, изучайте и подобных вопросов возникать не будет. Удачи :)

→ Ссылка