Ответы пользователя по тегу Telegram
  • Как сделать регистрацию в телеграм боте?

    @Aztart
    1. Создать базу данных с таблицей пользователей (Имя, фамилия, айди и т.д.)
    2. Создать состояния в машине состояний
    3. Создать команду, запрашивающую у пользователя 1. Имя, 2. Фамилия, хендлером сообщений с применением состояний. Загрузить полученные данные в переменные.
    4. По окончании процесса регистрации, значения переменных записать в бд. Сбросить состояние до нулевого.
    Ответ написан
    Комментировать
  • Как объединить функции бота и канала в одном телеграм-боте в aiogram?

    @Aztart Автор вопроса
    Нашёл решение. Нужно создать базу данных для бота, куда будут прописываться данные пользователя после команды /start. Через админку или команду создавать пост, с отправлением его через "await bot.send_message/send_photo" зарегистрированным в БД пользователям.
    Ответ написан
    Комментировать
  • Как отлавливать остановку бота пользователем в телеграм?

    @Aztart Автор вопроса
    Нашёл. Никак. Только создать хранилище id сообщений бота пользователю, и команду "Отписаться", удаляющую все эти сообщения и пользователя из бд.
    Ответ написан
    Комментировать
  • Для чего в телеграм ботах нужны сотояния?

    @Aztart
    Для разграничения выполнения определённых функций. Функции для одного состояния, не будут запускаться в другом и наоборот.

    На примере библиотеки Aiogram
    from aiogram import Bot, Dispatcher
    from aiogram.utils.helper import Item, Helper
    
    bot = Bot(token=BOT_TOKEN, parse_mode='HTML')
    dp = Dispatcher(bot, storage=MemoryStorage())
    
    #Создание двух состояний (Есть третье нулевое)
    class ListOfStates(Help):
        STATE_0 = Item()
        STATE_1 = Item()
    
    #Команда для нулевого состояния (Не присвоенного) для переключения бота в состояние STATE_0
    @dp.message_handler(commands=['make_state'])
    async def state_set(message: types.Message):
        state = dp.current_state()
        await state.set_state(ListOfStates.STATE_0)
        await message.answer('Бот в состоянии STATE_0')
    
    #Команда для возвращения бота в нулевое состояние 
    @dp.message_handler(commands=['comand'], state = ListOfStates.STATE_0())
    async def state_answer(message: types.Message):
        state = dp.current_state()
        await state.reset_state()
        await message.answer('Бот в нулевом состоянии')
    Ответ написан