Как сделать так чтобы после ввода команды он ждал, нового ввода, запомнил ее и вставил в функцию, Aiogram Telegram Bot
У меня есть Telegram BOT на aiogram, который после ввода определенной команды, он ждал нового ввода и не выполнял функцию пока не пользователь что то не напишет, а после взял ввод от пользователя, и вставил это в функцию. Вот кусок кода:
@dp.message_handler(is_owner=True, commands=['text'])
async def likes_post(message: types.Message):
if message.text == "/like":
@dp.message_handler(is_owner=True, content_types=['text'])
async def likes_post_1(message: types.Message):
try:
message.reply("Ведите название аккаунта instagramа:")
text = message.text()
except:
message.reply(f"Название аккаунта instagramа: {message.text}")
await message.reply("Проверьте название аккаунта instagramа:")
my_bot = InstagramBot(username, password)
my_bot.login()
time.sleep(4)
my_bot.put_many_likes(f"https://www.instagram.com/{message.text}/")
path = os.path.join(os.path.abspath(os.path.dirname(__file__)), (f'{message.text}.txt'))
os.remove(path)
path = os.path.join(os.path.abspath(os.path.dirname(__file__)), (f'{message.text}_set.txt'))
os.remove(path)
await message.answer ("Готово")
@dp.message_handler(is_owner=True, commands=["hashtag"], content_types=types.ContentTypes.TEXT)
async def hash_tag(message: types.Message):
await message.answer("Напиши любой #")
time.sleep(5)
my_bot = InstagramBot(username, password)
my_bot.login()
time.sleep(10)
my_bot.like_photo_by_hashtag(message.text)
await message.answer ("Готово")
Ответы (2 шт):
Автор решения: Pain Worsnop
→ Ссылка
Для подобной задачи можно использовать FSM.
И я бы заменил if message.text == "/like": на полноценный хендлер.
Автор решения: beZZZ
→ Ссылка
Можно использовать FSM.
Пример кода:
from aiogram.dispatcher.filters.state import StatesGroup, State
from aiogram import Bot, Dispatcher, executor, types
from aiogram.dispatcher import FSMContext
class Start(StatesGroup): # Создаём класс.
start_name= State()
@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 '
f'Тебя зовут: {name}')
Это только пример кода