#python-3.x #discord.py
#python-3.x #discord.py
Вопрос:
Последние несколько дней я возился с перезаписью python-бота discord. Я заметил, что добавление нескольких функций приводит к тому, что другие функции перестают работать. Я добавил задачу цикла, которая отправляет видео из случайного списка URL-адресов, и сначала я подумал, что это может привести к тому, что другие функции перестанут работать, но комментирование этого по-прежнему вызывает проблемы. Это довольно раздражает, когда у вас нет сообщений об ошибках, из которых можно было бы выйти. Любая помощь будет с благодарностью!
import discord
from discord.ext import commands, tasks
import re
from random import randint
client = commands.Bot(command_prefix = "//")
@client.event
async def on_ready():
print("The bot is doing stuff.")
@client.event
async def on_message(message):
"""Deletes <specific> YT link"""
if <specific yt link> in message.content:
await message.delete()
print("video deleted")
@client.event
async def on_message(message):
"Sends a peeposalute whenever someone says 'goodnight'"
gn = re.compile('goodnight|good night|gn')
if gn.search(message.content.lower()):
await message.channel.send('<:peepoSalute:665687773407215637>')
print('peepo has saluted')
@client.event
async def on_message(message):
"""Checks the #new-uploads channel, reacts to any new messages and adds the video URL to the list"""
if message.channel.id == <channel id>:
with open('videos.txt', 'a') as f:
f.write(message.content 'n')
print("New video added to list")
message.add_reaction('<:Wowee:592122719546638408>')
@tasks.loop(hours=24)
async def daily_video():
"""Sends a random video in #general daily"""
with open('videos.txt', 'r') as f:
videos = f.readlines()
target_general_id = <channel id>
general_id = client.get_channel(target_general_id)
await general_id.send(videos[randint(0, len(videos) - 1)])
print("Daily video sent")
@daily_video.before_loop
async def before():
await client.wait_until_ready()
print("Finished waiting")
daily_video.start()
client.run(<token>)
Комментарии:
1. Простое объяснение заключается в том, что вы выполняете слишком много работы над потоком, который использует asyncio; подключаете его. Убедитесь, что у вас нет кода, который блокирует рабочий поток. Возможно, разбросайте некоторые
2. Или, скорее, я должен был сказать: » Вероятное объяснение заключается в том, что вы выполняете слишком много работы над потоком, который использует asyncio».