Как боту продолжить диалог с юзером Python Aiogram
Всем привет! Появилась задача: нужно что бы бот продолжал вести диалог с пользователем. Что то по типу:
юзер:/start
бот: привет напиши мне свое имя
юзер: *вводит свое имя*
бот: спасибо я запомню
Как реализовать? Заранее спасибо за внимание к вопросу!
Ответы (2 шт):
Автор решения: Muxe1
→ Ссылка
Держи
P.S. Лучше используй telebot вместо aiogram. Для твоих задач самое то
import telebot
bot = telebot.TeleBot("ТОКЕН")
@bot.message_handler(content_types=["text"])
def start(message):
if message.text.lower() == "/start":
bot.send_message(message.chat.id, "Привет, напиши мне свое имя")
bot.register_next_step_handler(message, foo)
if message.text.lower() == "/name":
bot.send_message(message.chat.id, f"Твоё имя: {name}")
def foo(message):
global name
name = message.text.lower()
bot.send_message(message.chat.id, "Спасибо, я запомню")
bot.polling(none_stop=True)
Автор решения: beZZZ
→ Ссылка
Используйте машину состояний.
louder.py
from aiogram.dispatcher.filters.state import StatesGroup, State
class Start(StatesGroup):
start_name= State()
main.py
from aiogram import Bot, Dispatcher, executor, types
from aiogram.dispatcher import FSMContext
from louser import Start # импортирую класс "Start" из файла "louder.py"
# Команда /start
@dp.message_handler(commands=['start'], state=None)
async def start_message(message: types.Message):
await bot.send_message(message.from_user.id, text='Как тебя зовут?')
await Start.start_name.set()
@dp.message_handler(state=Start.start_name)
async def namee(message: types.Message, state: FSMContext):
name = message.text
await bot.send_message(message.from_user.id, text=f'Спасибо за ответ\nТебя зовут: {name}')
Это пример кода. Но лучше почитать документацию.