Задать вопрос
@GeneralDik

Как исправить игнорирование кода при импорте в python?

Создаю бота на python. Создал два файла: main.py и ticket.py.
Решил, что в main будет все объединяться, что находится по отдельности.
Сделал import тикета, но при выполнение команды, она просто игнорируется и пишется, что нет такой команды, хотя я лично импортировал

main.py :
import discord
from discord.ui import Select, View, Button, Modal
from discord.ext import commands
from discord import app_commands
import ticket

intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)
bot.run(***)


ticket.py:
import discord
from discord.ui import Select, View, Button, Modal
from discord.ext import commands
from discord import app_commands

intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)

@bot.command()
async def systicket(ctx):
...


При выполнение команды в дискорде, команда игнорируется, но если команда будет находиться с кодом в main, то всё будет работать. При этом желательно, чтобы при импорте переносился весь код
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Всё правильно, вы ведь выполняете метод run переменной main.bot, а обработчики у вас назначены на ticket.bot.
Ответ написан
@dim5x
ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
Используйте коги: https://discordpy.readthedocs.io/en/stable/ext/com...

main.py:
import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.message_content = True

bot = commands.Bot(command_prefix="!", intents=intents)

async def load_extensions():
    await bot.load_extension("ticket")  # Загружаем Cog без .py

@bot.event
async def on_ready():
    print(f"Бот {bot.user} готов!")
    await load_extensions()

bot.run("***")


ticket.py:
from discord.ext import commands

class TicketsCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command(name="systicket")
    async def systicket(self, ctx):
        """Обработка команды !systicket"""
        # логика команды
        await ctx.send("Система тикетов работает!")  # Пример ответа

async def setup(bot):
    await bot.add_cog(TicketsCog(bot))  # Важно: await и новое API discord.py 2.0+
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы