Загрузка...

Примечание 3х лиц в ботах тг

Тема в разделе Python создана пользователем krafti777 4 янв 2025. 252 просмотра

  1. krafti777
    krafti777 Автор темы 4 янв 2025 0 15 июл 2022
    Какие есть варианты того чтобы другой пользователь не мог нажимать на кнопки пользователя 1 в аиограм. Например пользователь 1 вызвал кнопки а пользователь2 хочет кликнуть как мне пресекать его попытки
     
    1. Посмотреть предыдущие комментарии (2)
    2. SpyEv
      krafti777, какое муторно, такое юзает мой друг, я и вся моя семья
    3. SaySoGooD
      krafti777, 1.сохранять айди в сообщении, и брать его из сообщения, 2. сохранять в callback, 3. стейт
    4. krafti777 Автор темы
      SaySoGooD, да я понимаю но через фсм удобнее
  2. ЛевыйТип
    Кинь первого в состояние а второго не кидай и обрабатывать только тех кто в состоянии
    --- Сообщение объединено с предыдущим 4 янв 2025
    ChatGPT сделай помер fms aiogram где будет кнопка но один из пользователь будет в состоянии ее нажать что бы она обработала а второй нет
     
    1. ChatGPT
      Привет, ЛевыйТип! Конечно, могу помочь с примером. Вот простой пример использования Finite State Machine (FSM) в aiogram, где только один пользователь может нажать на кнопку и получить обработку:

      Python

      from aiogram import Bot, Dispatcher, types
      from aiogram.contrib.fsm_storage.memory import MemoryStorage
      from aiogram.dispatcher import FSMContext
      from aiogram.dispatcher.filters.state import State, StatesGroup
      from aiogram.utils import executor

      API_TOKEN = 'YOUR_BOT_TOKEN_HERE'

      bot = Bot(token=API_TOKEN)
      storage = MemoryStorage()
      dp = Dispatcher(bot, storage=storage)

      # Определяем состояния
      class Form(StatesGroup):
      waiting_for_button_click = State()

      # Команда /start
      @dp.message_handler(commands='start')
      async def start_command(message: types.Message):
      await message.answer("Привет! Нажми на кнопку, чтобы продолжить.")
      await Form.waiting_for_button_click.set()

      # Обработчик кнопки
      @dp.message_handler(state=Form.waiting_for_button_click)
      async def button_click_handler(message: types.Message, state: FSMContext):
      if message.from_user.id == 123456789: # Замените на ID пользователя, который может нажимать кнопку
      await message.answer("Кнопка нажата!")
      await state.finish()
      else:
      await message.answer("Извините, вы не можете нажать эту кнопку.")

      if __name__ == '__main__':
      executor.start_polling(dp, skip_updates=True)
      В этом примере, только пользователь с определённым ID (замените `123456789` на нужный ID) может нажать на кнопку и получить обработку. Все остальные пользователи получат сообщение о том, что они не могут нажать на кнопку.

      Если у тебя есть ещё вопросы или нужно что-то уточнить, дай знать!
    2. krafti777 Автор темы
    3. SaySoGooD
      krafti777, Стейт не самая лучшая штука, для этого, лучше всего в cb дате сохранять или брать из сообщения
      5 янв 2025 Изменено
    4. Посмотреть следующие комментарии (5)
  3. KLINTXXXGOD
    KLINTXXXGOD 7 янв 2025 </> Разработка - https://lolz.live/threads/7695405 761 10 фев 2023
    Если актуально то просто при генерации кнопки меняешь колбек на callback_data = "{твойколбек}:{idтипочка}"
    А в хендлере пишешь через свифт если есть колбек то выполняет функцию а функция сплитит колбек дату на 2 части по : и потом просто сравнивать заспличиный результат и id Типа который вызвал хендлер
     
Top
Загрузка...