Я рекомендую вам использовать классы Bot
и Cog
, это будет намного эффективнее, они представлены в discord.py, а имеет декораторы для определения функции цикла . Они находятся в части discord.ext.commands
модуля. Вы можете сделать:
from discord.ext import commands, tasks
Я только что ответил на другой пост с примером винтика и функции цикла, вы найдете его здесь . Вот такая же структура, адаптированная к вашему случаю:
# LoopCog.py
from discord.ext import commands, tasks
import random
class LoopCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.test_loop.change_interval(minutes = self.bot.cnt)
@commands.Cog.listener("on_ready")
async def on_ready(self):
self.test_loop.start()
@tasks.loop(hours=24)
async def test_loop(self):
# insert your ph function contents here
# access the channel id via self.bot.ch
def setup(bot):
bot.add_cog(LoopCog(bot))
# main.py
from discord.ext import commands
bot = commands.Bot(command_prefix = "!")
bot.ch = 0
bot.cnt = 0
bot.load_extension("LoopCog")
@bot.event
async def on_ready():
print("ready")
bot.run(token, reconnect = True)
Я предлагаю вам go посмотреть несколько руководств. Использование класса Client
для Bot
не является правильным способом для go, вам придется программировать все, что уже есть в Bot
, если вы продолжите использовать Client
.
Вы Здесь вы найдете документацию по API для Bot , Cog и задач
Касательно heroku , , он, к сожалению, будет перезапускать вашего бота каждые 24 часа , если только вы не go для платного профессионального предложения, которое включает в себя работу 24/7. Он также переведет вашу программу в спящий режим, если она не получит никаких запросов в течение 30 минут.