Discord.py проблемы при работе с on_raw_reaction_add(payload)

Не могу понять, почему мне бьет ошибки "task_message" is not defined в 44 строке "ctx" is not defined в 48 строке "task_name" is not defined в 48 строке

все ошибки появляются только после @bot.event. До этого нет ошибок. Discord.py 2.1.0 python 3.1

Код

# pip install discord.py


import discord
from discord.ext import commands
from datetime import datetime, timedelta

config = {
    'token': 'тут был токен',
    'prefix': '/',
}


intents = discord.Intents.default() # Подключаем "Разрешения"
intents.message_content = True
bot = commands.Bot(command_prefix=config['prefix'], intents=intents)

@bot.command()
async def task(ctx, date: str, *, task_name: str):
    task_date = datetime.strptime(date, "%d.%m.%Y")
    today_dt = datetime.now()
    category = discord.utils.get(ctx.guild.categories, name="задачи")
    if not category:
        await ctx.send("Категория 'задачи' не найдена.")
        return
    if task_date < today_dt:
        archive_category = discord.utils.get(ctx.guild.categories, name="архив")
        if not archive_category:
            await ctx.send("Категория 'архив' не найдена.")
            return
        channel = await ctx.guild.create_text_channel(date, category=archive_category)
    else:
        channel = await ctx.guild.create_text_channel(date, category=category)
    task_message = await channel.send(task_name)
    await task_message.add_reaction("✅")
    await task_message.add_reaction("❌")
    await task_message.add_reaction("?")
    bot.task_message = task_message #Присваиваем переменной task_message статус глобальной, чтобы можно было обрабатывать эвенты
    bot.task_message = task_name


@bot.event
async def on_raw_reaction_add(payload):
    if payload.message_id == task_message.id:
        user = bot.get_user(payload.user_id)
        if str(payload.emoji) == "✅":
            # Выполнено
            await ctx.send(f"{user.name} нажал на кнопку 'Выполнено' для задачи '{task_name}'.")
        elif str(payload.emoji) == "❌":
            # Не выполнено
            reason = await bot.wait_for('message', check=lambda message: message.author == user)
            await ctx.send(f"{user.name} нажал на кнопку 'Не выполнено' для задачи '{task_name}' и указал причину: {reason.content}.")
            channel = bot.get_channel(channel_id)
            await channel.send(f"{user.name} не выполнил задачу '{task_name}' и указал причину: {reason.content}.")
        elif str(payload.emoji) == "?":
            # Перенести на дату
            new_date = await bot.wait_for('message', check=lambda message: message.author == user)
            new_date_dt = datetime.strptime(new_date.content, "%d.%m.%Y")
            task_channel = bot.get_channel(channel_id)
            category = discord.utils.get(ctx.guild.categories, name="задачи")
            if new_date_dt < today_dt:
                archive_category = discord.utils.get(ctx.guild.categories, name="архив")
                if not archive_category:
                    await ctx.send("Категория 'архив' не найдена.")
                    return
                new_channel = await ctx.guild.create_text_channel(new_date.content, category=archive_category)
            else:
                new_channel = await ctx.guild.create_text_channel(new_date.content, category=category)
            await task_message.edit(content=task_name,channel=new_channel)
            await ctx.send(f"{user.name} нажал на кнопку 'Перенести на дату' и перенес задачу на дату: {new_date.content}")




bot.run(config['token'])

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