Бот повторяется?

#python #discord.py

#python #discord.py

Вопрос:

Я создаю discord-бота с нуля, и я размещаю бота исключительно на своем компьютере. не на Heroku или любом другом сервисе. Когда я набираю ;help в моем тестовом канале discord, бот повторяет ответ для одного экземпляра примерно 6-8 раз. он сбрасывает 4 одновременно, затем еще 3, а затем еще один после этого с интервалом примерно в 4 секунды.

 import json
import discord

from discord.ext import commands

TOKEN =  # My token

client = commands.Bot(command_prefix = ";")

@client.command(pass_context=True)
async def readycheck(ctx):
    await ctx.send("Bot is ready cap'n!")

@client.command(pass_context=True)
async def groot(ctx):
    await ctx.send("I am GAY!")

@client.command(pass_context=True)
async def ping(ctx):
    await ctx.send("Pong!")

@client.command(pass_context=True)
async def info(ctx):
    await ctx.send("Welcome to the Testbot0124 designed by loving people")

client.run(TOKEN)
  

Комментарии:

1. Вы уверены, что у вас запущен только один экземпляр? Потому что эти сообщения не выглядят так, как будто они будут запускать друг друга. (Чтобы сообщения не запускали друг друга, я использую if message.author == client.user: return в своем on_message перехватчике событий. Конечно, вы можете использовать что-то подобное с командными перехватами?)

2. хорошо, итак, после дальнейшего расследования, это потому, что у меня запущено 13 экземпляров. Теперь вопрос в том, что я могу добавить в код, чтобы заставить программу завершить саму себя вместо создания повторяющихся экземпляров?

3. Завершите себя, когда? Обычно вы хотите, чтобы он завершался только по запросу (например, когда вы отправляете SIGINT процессу), а не сам по себе.

4. прекратить, возможно, неподходящее слово. Итак, когда я запускаю команду ;help в моем текстовом канале discord, он отвечает 13 раз. Мой друг говорит, что это потому, что у меня запущено 13 экземпляров, но я их не открывал, так как я могу переписать код или что я могу добавить к нему, чтобы он не делал этого, когда я запускаю команду ;help?

5. Повторите » но я их не открывал «, это неправда. Файлы на вашем диске не просто выполняются сами по себе.

Ответ №1:

Я хотел добавить решение для этого на случай, если кто-то другой столкнется с такой же проблемой. Вместо того, чтобы использовать мой текстовый редактор для запуска моего скрипта, я начал использовать терминал, cd / перейдя в каталог path и используя python3 main.py для запуска моих файлов. У меня больше нет нескольких экземпляров бота, запущенных одновременно.