Ответы пользователя по тегу Python
  • Как сделать, чтобы бот работал не на Inline кнопках, а на командах через /?

    @paxa-1331
    Если правильно понял, то вот:

    import telebot;
    from telebot import types;
    bot = telebot.TeleBot('ТОКЕН')
    
    @bot.message_handler(content_types=['text'])
    def get_text_messages(message):
        bot.send_message(message.from_user.id, f"Привет\nВыберите город:\n г.Москва - /city1\nг.Санкт-Петербург - /city2")
    
    @bot.message_handler(commands=['city1'])
    def get_text_messages(message):
        bot.send_message(message.from_user.id, f"Ты выбрал г.Москва2")
    
    @bot.message_handler(commands=['city2'])
    def get_text_messages(message):
        bot.send_message(message.from_user.id, f"Ты выбрал г.Санкт-Петербург")
    Ответ написан
    Комментировать
  • Можно ли боту заменить стикер?

    @paxa-1331
    Почему нельзя удалить старый и загрузить новый?
    Ответ написан
    Комментировать
  • Как сделать систему подписок PYTHON?

    @paxa-1331
    Предлагаю реализовать доступы просто, и ограничить доступы на время покупки просто и все.

    Через sqlite
    Ответ написан
    Комментировать
  • Как сделать чтобы хендлер Aiogram выбирался по значению в sql бд?

    @paxa-1331
    Честно говоря не знаю как реализовать правильно, но мне пришла такая идея:

    Записываем в бд, какой хендлер нажал пользователь и в дальнейшем, делаем проверку.

    К примеру:

    @dp.message_handler(state=tovar.new_tovar)
    async def cmd_start(message: types.Message,state: FSMContext):
        await state.update_data(tovar1=message.text)
        c.execute("UPDATE user_stat SET stat_id= ? WHERE id = ? ",(message.chat.id,"tovar.new_tovar",))
        await message.reply(f'Отправьте фото товара',reply_markup =kb.back1)
        await tovar.new_tovar_name.set()


    Ну и собственно как получить, я думаю уже сам догадаешься )
    Ответ написан
  • Как сделать чтобы тг бот скидал действия пользователей в отдельный тг чат и я смог отвечать на сообщения, например тех.поддержка?

    @paxa-1331
    Я бы действия записал в лист (допустим 10 последних, если выводить больше, то это треш)

    А сама поддержка реализована так:

    ###---Чат для отправки заявок в поддержку---###
    SUPPORT = -791963896
    
    @dp.message_handler(content_types=['text'], text=('Поддержка'))
    async def name(message: types.Message, state: FSMContext):
        await bot.send_message(message.chat.id, "Введите своё имя:",reply_markup=kb.back1)
        # Переходим на следующий стейт
        await Anketa.name.set()
    # Вы можете использовать состояние '*', если вам нужно обработать все состояния
    @dp.message_handler(state='*', content_types=['text'], text='❌ Отменить ❌')
    @dp.message_handler(Text(equals='❌ Отменить ❌', ignore_case=True), state='*')
    async def cancel_handler(message: types.Message, state: FSMContext):
        """
        Разрешить пользователю отменить любое действие
        """
        current_state = await state.get_state()
        if current_state is None:
            return
    
        logging.info('Cancelling state %r', current_state)
        # Отменить состояние и сообщить об этом пользователю
        await state.finish()
        # И снимите клавиатуру (на всякий случай)
        await message.reply('Хорошо, отменил', reply_markup=types.ReplyKeyboardRemove())
        await message.answer('Главное меню ❗️',reply_markup=kb7.start_kb())
    
    
    @dp.message_handler(state=Anketa.name, content_types=types.ContentTypes.TEXT)
    async def age(message: types.Message, state: FSMContext):
        # Записываем ответ в storage
        await state.update_data(name=message.text)
        await bot.send_message(
            message.chat.id, "Введите Ваш телефон (внутренний или мобильный)",reply_markup=kb.back1
        )
        await Anketa.namee.set()
    @dp.message_handler(content_types=['text'], text='Отправить', state=Anketa.namee)
    await state.update_data(namee=message.text)
    data = await state.get_data()
        await bot.send_message(
            SUPPORT,
            f"<b>!Получена заявка \nID: </b>{message.chat.id}\n<b>От:</b> @{message.from_user.username}   <a href='tg://user?id={message.from_user.id}'>{quote_html(message.from_user.full_name)}</a>\n"
            f'<b>Имя:</b> {data.get("name")}\n'
            f'<b>Номер телефона:</b> {data.get("namee")}\n',reply_markup=kb.fun(message.chat.id), parse_mode='HTML'
        )


    Если не понятно - пиши.
    Ответ написан
  • ModuleNotFoundError: No module named '_hdfext' Как решить данную ошибку?

    @paxa-1331
    Ошибка вроде связана с тем, что не установлен модуль.
    В cmd напиши:
    pip install _hdfext
    Ответ написан
    Комментировать
  • Как вывести данные строку?

    @paxa-1331 Автор вопроса
    @dp.message_handler(commands=['n'])
    async def cmd_start(message: types.Message, state: FSMContext):
        c.execute(f"""SELECT * FROM all_category WHERE rowid > 0""")
        items = c.fetchall()
        z = ""
        for el in items:
            z += el[0] + "\n"
    
        await message.answer(z)
    Ответ написан
    Комментировать
  • Как получить имя для inline кнопки из базы данных sqlite?

    @paxa-1331 Автор вопроса
    реализовалось

    def get_keyboard_data():
        db.commit() #обновить бд 
        c.execute("SELECT VK, * FROM vkINST" )
        db.commit() #обновить бд 
        kb = types.ReplyKeyboardMarkup(resize_keyboard=True)
        kb.add((f'{c.fetchone()[1]}'))
        return kb  
    
    db.commit() #обновить бд  
    @dp.message_handler(content_types=['text'], text='Тест9')
    async def handfler(message: types.Message):
        db.commit() #обновить бд  
        await message.answer(' Добро пожаловать тест3', reply_markup=get_keyboard_data())  
     #   await message.answer(' Добро пожаловать тест3 низ', reply_markup=sta7)
    Ответ написан
    Комментировать
  • Как найти бота или чат по id в Telegram?

    @paxa-1331
    Если нужна ссылка, то можно так:
    <a href='tg://user?id={message.from_user.id}'>{quote_html(message.from_user.full_name)}</a>
    Ответ написан
    Комментировать