#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
для запуска моих файлов. У меня больше нет нескольких экземпляров бота, запущенных одновременно.