@koslavr

Как сделать команду stop для aiogram в телеграмм боте?

Пожалуйста помогите, я честно пытался сам найти информацию но видимо я слишком туп, мне нужно сделать так чтобы после ввода команды /stop бот переставал отвечать отвечать на все команды кроме /start, а после ввода /start опять отвечал на все команды. Вот мой код:

from aiogram import types, executor, Dispatcher, Bot
from bs4 import BeautifulSoup
import requests

bot = Bot("3190234925:AAHia2F5dK201PCsdwKRywteAqwRmNl_8Iqs")
dp = Dispatcher(bot)

#КОМАНДА /start
@dp.message_handler(commands=['start'])
async def start(message: types.message):
await bot.send_message(message.chat.id, """
Привет я бот который позволит быстро находить нужные товары в akami-shop
Для того чтобы я отправил тебе товар введи в поле его название...""",
parse_mode="html", disable_web_page_preview=True)

@dp.message_handler(commands=['help'])
async def help(message: types.message):
await bot.send_message(message.chat.id, """
Эта команда выведит полезную информацию для тебя""",
parse_mode="html", disable_web_page_preview=True)

@dp.message_handler(commands=['pousk'])
async def pousk(message: types.message):
await bot.send_message(message.chat.id, """Введите товар""", parse_mode="html", disable_web_page_preview=True)
@dp.message_handler(content_types=['text'])
async def parser(message: types.message):
url = "https://akami.org/shop/search?text=" + message.text
request = requests.get(url)
soup = BeautifulSoup(request.text, "html.parser")

request = requests.get(url)
soup = BeautifulSoup(request.text, "html.parser")
all_links = soup.find_all("div", class_="catalog-item equal-cells globalFrameProduct to-cart")
for link in all_links:

price = link.find('span', class_="price priceVariant").text
name = link.find('span', class_="title").text

img = link.find("img", class_="vImg lazy")
img = requests.get('https://akami.org/' + img['data-src']).content

await bot.send_photo(message.chat.id, img, caption="" + name + "\n" + price + f"\nСсылка на сайт ", parse_mode="html")

if all_links.index(link) == 9:
break

executor.start_polling(dp)
  • Вопрос задан
  • 1458 просмотров
Решения вопроса 1
@defriz
люблю js
вам нужно хранить в базе пользователя и при написании /start в параметр, отвечающий за это ставить True, потом поставить обработчик всех сообщений перед командами и в нём находить юзера из базы, и проверять параметр является ли он False, если да то ничего не делать и не продолжать проверять остальные команды, т.е. return.
в команде /stop этот параметр ставим на False, а в /start на True
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы