Задать вопрос
  • Сохранение старых данных, как сделать актулальными?

    @Akmal009 Автор вопроса
    rPman, Не, данные он то получает, только при запуске бота. Запускаю, он получает данные при запуске, и все, после удаления или изменения данных во время работы бота, он уже прекрашает получение. Можно с вами связаться? Чтобы решить проблему? Дискорд: akmalmine или Телеграм: @Akmal2337
    Написано
  • Сохранение старых данных, как сделать актулальными?

    @Akmal009 Автор вопроса
    rPman, Чтобы удалить или добавить, вот код

    Добавить
    @commands.slash_command(name="add_a", description="Добавить звук")
        async def add_a(self, ctx, 
                            название: str = discord.Option(str, description="Название звука"),
                            звук =  discord.Option(discord.Attachment, description="Закрепить аудио")):
            await ctx.defer()
            conn = sqlite3.connect('music.db')
            cursor = conn.cursor()
    
            cursor.execute("SELECT name FROM music WHERE name=?", (название,))
            existing_sound = cursor.fetchone()
    
            if existing_sound:
                emb = discord.Embed(title='Звук', colour=discord.Color.red())
                emb.set_footer(text=f'Звук с именем {название} уже существует!')
                await ctx.respond(embed=emb)
                await ctx.delete(delay=10)
            else:
                path = f"audio/{звук.filename}"
                await звук.save(path)
    
                try:
                    cursor.execute("INSERT INTO music (name, path) VALUES (?, ?)", (название, path))
                    conn.commit()
                    emb = discord.Embed(title='Звук', colour=discord.Color.green())
                    emb.set_footer(text=f'Аудиофайл {название} успешно добавлен!')
                    await ctx.respond(embed=emb)
                    await ctx.delete(delay=10)
                except sqlite3.IntegrityError:
                    emb = discord.Embed(title='Звук', colour=discord.Color.red())
                    emb.set_footer(text=f'Звук с именем {название} уже существует!')
                    await ctx.respond(embed=emb)
                    await ctx.delete(delay=10)
                finally:
                    conn.close()


    Удаление
    @commands.slash_command(name="del_a", description="Удалить звук")
        async def del_a(self, ctx, название = discord.Option(str, description="Выберите аудио для удаления", choices = audio_names)):
            await ctx.defer()
            conn = sqlite3.connect('music.db')
            cursor = conn.cursor()
            cursor.execute("SELECT * FROM music WHERE name=?", (название,))
            row = cursor.fetchone()
            if row:
                cursor.execute("DELETE FROM music WHERE name=?", (название,))
                conn.commit()
                path = row[1]  
                if os.path.exists(path):
                    os.remove(path)
                conn = sqlite3.connect('music.db')
                cursor = conn.cursor()
    
                cursor.execute("SELECT name FROM music")
                result = cursor.fetchall()
                audio_names = [row[0] for row in result]
                emb = discord.Embed(title='Звук', colour=discord.Color.green())
                emb.set_footer(text=f'Аудиофайл {название} успешно удален!')
                await ctx.respond(embed=emb)  
                await ctx.delete(delay=10)
            else:
                emb = discord.Embed(title='Звук', colour=discord.Color.red())
                emb.set_footer(text=f'Звук с именем {название} не найден!')
                await ctx.respond(embed=emb)  
                await ctx.delete(delay=10)
            conn.close()
    Написано
  • Сохранение старых данных, как сделать актулальными?

    @Akmal009 Автор вопроса
    rPman, Мне нужно чтобы читалось, актуальное, то есть когда в базе данных измениться список, то при использование choice тоже были измененый список
    Написано
  • Не могу понять почему выводит ошибка use_context если я его уже прописал?

    @Akmal009 Автор вопроса
    Или же связано с другой стороны кода, вот весь код
    import telegram
    from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
    from telegram import ReplyKeyboardMarkup, ReplyKeyboardRemove 
    # Обработчик команды /start
    def start(update, context):
        reply_text = "Здарова, я как понял ты хочешь вступить в нашу семью CARTIER GANG?\n" \
                     "Отлично, но тут у нас принимаются по определенным критериям\n" \
                     "Ответь на вопросы, если ты нам подходишь мы примим тебя в нашу семью CARTIER GANG"
        reply_markup = ReplyKeyboardMarkup([["Согласен"]], one_time_keyboard=True)
        update.message.reply_text(reply_text, reply_markup=reply_markup)
    # Обработчик ответа пользователя на вопросы
    def answer_questions(update, context):
        message = update.message.text
        if message == "Согласен":
            context.user_data["username"] = None
            context.user_data["years_in_state"] = None
            context.user_data["lawfulness"] = None
            context.user_data["rp_terms"] = None
            context.user_data["age"] = None
            context.user_data["adequacy_help"] = None
            reply_text = "Для начала мне бы узнать твой ник в игре\nПример: Mahmud_Uzbekov"
            update.message.reply_text(reply_text)
        elif context.user_data["username"] is None:
            if "_" not in message:
                update.message.reply_text("Напиши свой ник через _")
            elif any(char.isdigit() for char in message):
                update.message.reply_text("В твоем нике не должна быть цифра")
            else:
                context.user_data["username"] = message
                update.message.reply_text(f"{message}\nАха, запомнил")
                reply_text = "Следующий вопрос, сколько лет проживаете в штате?\nОткрой инвентарь и посмотрите через паспорт"
                update.message.reply_text(reply_text)
        elif context.user_data["years_in_state"] is None:
            if not message.isdigit():
                update.message.reply_text("К сожалению ты нам не подходишь, так как ты в нашем штате недавно, и еще не ознакомлен с местностью")
            elif int(message) < 5:
                update.message.reply_text("К сожалению ты нам не подходишь, так как ты в нашем штате недавно, и еще не ознакомлен с местностью")
            else:
                context.user_data["years_in_state"] = message
                update.message.reply_text("То что нужно, продолжаем вопрос")
                reply_text = "Скажи ка мне свое законопослушность\nОткрой инвентарь и посмотрите через паспорт"
                update.message.reply_text(reply_text)
        elif context.user_data["lawfulness"] is None:
            if not message.isdigit():
                update.message.reply_text("К сожалению ты нам не подходишь, так как нам нужны законный члены семьи")
            elif int(message) < 50:
                update.message.reply_text("К сожалению ты нам не подходишь, так как нам нужны законный члены семьи")
            else:
                context.user_data["lawfulness"] = message
                update.message.reply_text("Молодец не нарушаешь")
                reply_text = "Теперь проверим твои знание на РП термины\n" \
                             "Что означает СК, ДМ, ТК - Напиши кратко и понятно"
                update.message.reply_text(reply_text)
        elif context.user_data["rp_terms"] is None:
            context.user_data["rp_terms"] = message
            update.message.reply_text("Хорошо, записал твой ответ")
            reply_text = "Скажи ка свой возраст в реальности"
            update.message.reply_text(reply_text)
        elif context.user_data["age"] is None:
            if not message.isdigit():
                update.message.reply_text("К сожалению ты мал для нашей семьи")
            elif int(message) < 14:
                update.message.reply_text("К сожалению ты мал для нашей семьи")
            else:
                context.user_data["age"] = message
                update.message.reply_text("Так-с записал")
                reply_text = "Как вы оцениваете свое адекватность и будете ли помогать развивать семью?"
                update.message.reply_text(reply_text)
        elif context.user_data["adequacy_help"] is None:
            context.user_data["adequacy_help"] = message
            update.message.reply_text("И это тоже записал")
            reply_text = "Теперь ожидайте одобрение от старшего в семье, мы сообщим вам если вас одобрят"
            update.message.reply_text(reply_text)
            # Отправка информации старшим пользователям
            user_info = f"1.Ник: {context.user_data['username']}\n" \
                        f"2.В штате: {context.user_data['years_in_state']}\n" \
                        f"3.Законопослушности: {context.user_data['lawfulness']}\n" \
                        f"4.Рп термин: {context.user_data['rp_terms']}\n" \
                        f"5.Возраст: {context.user_data['age']}\n" \
                        f"Адекват и помощь: {context.user_data['adequacy_help']}"
            context.bot.send_message(chat_id="@aziz_muhammadjonov", text=user_info)
            context.bot.send_message(chat_id="@Akmal2337", text=user_info)
            reply_markup = ReplyKeyboardMarkup([["Одобрить", "Отказать"]], one_time_keyboard=True)
            update.message.reply_text("Ожидайте одобрение...", reply_markup=reply_markup)
    # Обработчик кнопок "Одобрить" и "Отказать"
    def decision(update, context):
        message = update.message.text
        if message == "Одобрить":
            reply_text = "Вы были приняты в семью, ожидаем вас у нашего дома пока нету"
        else:
            reply_text = "К сожалению вы нам не подходите"
        update.message.reply_text(reply_text, reply_markup=ReplyKeyboardRemove())
    # Обработчик некорректных сообщений
    def handle_invalid_message(update, context):
        update.message.reply_text("Извините, я не понимаю ваш ответ.")
    def main():
        updater = Updater(
            "Token"
        )   
        dp = updater.dispatcher
        dp.add_handler(CommandHandler("start", start))
        dp.add_handler(MessageHandler(Filters.text() & ~Filters.command, answer_questions))
        dp.add_handler(MessageHandler(Filters.regex(r"^(Одобрить|Отказать)$"), decision))
        dp.add_handler(MessageHandler(Filters.all, handle_invalid_message))
        updater.start_polling()
        updater.idle()
    if __name__ == '__main__':
        main()
  • Не могу понять почему выводит ошибка use_context если я его уже прописал?

    @Akmal009 Автор вопроса
    В новой версии импортирование Filters не рабоает, если вместо F написать f то проблема не выходит
    Traceback (most recent call last):
    File "d:\CARTIER GANG BOT\main.py", line 2, in
    from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
    ImportError: cannot import name 'Filters' from 'telegram.ext'
    Может быть из за этого выводит ошибку, и сейчас я когда убрал use_context просит update_queue, с той же ошибкой
    Traceback (most recent call last):
    File "d:\CARTIER GANG BOT\main.py", line 108, in
    main()
    File "d:\CARTIER GANG BOT\main.py", line 97, in main
    updater = Updater(
    TypeError: Updater.__init__() missing 1 required positional argument: 'update_queue'