callback add in bot for Docker
This commit is contained in:
parent
621b3725d4
commit
a140fab9db
51
bot.py
51
bot.py
@ -17,6 +17,9 @@ from aiogram.types import FSInputFile, URLInputFile, BufferedInputFile
|
||||
from aiogram.utils.markdown import hide_link #для скрытой ссылки
|
||||
# новый импорт!
|
||||
from aiogram.utils.keyboard import ReplyKeyboardBuilder # для создания кнопок
|
||||
# Новые импорты!
|
||||
from contextlib import suppress
|
||||
from aiogram.exceptions import TelegramBadRequest
|
||||
|
||||
|
||||
from config_reader import config
|
||||
@ -435,6 +438,54 @@ async def handle_contact(message: types.Message):
|
||||
else:
|
||||
await message.answer("Это не ваш контакт!")
|
||||
|
||||
# Продолжим с колбэками
|
||||
# Здесь хранятся пользовательские данные.
|
||||
# Т.к. это словарь в памяти, то при перезапуске он очистится
|
||||
user_data = {}
|
||||
#сформируем инлайн-клавиатуру
|
||||
def get_keyboard():
|
||||
buttons = [
|
||||
[
|
||||
types.InlineKeyboardButton(text="-1", callback_data="num_decr"),
|
||||
types.InlineKeyboardButton(text="+1", callback_data="num_incr")
|
||||
],
|
||||
[types.InlineKeyboardButton(text="Подтвердить", callback_data="num_finish")]
|
||||
]
|
||||
keyboard = types.InlineKeyboardMarkup(inline_keyboard=buttons)
|
||||
return keyboard
|
||||
|
||||
# формируем сообщение с переменным аргументом
|
||||
async def update_num_text(message: types.Message, new_value: int):
|
||||
with suppress(TelegramBadRequest):
|
||||
await message.edit_text(
|
||||
f"Укажите число: {new_value}",
|
||||
reply_markup=get_keyboard()
|
||||
)
|
||||
|
||||
# запуск клавиатуры по команде /numbers
|
||||
@dp.message(Command("numbers"))
|
||||
async def cmd_numbers(message: types.Message):
|
||||
user_data[message.from_user.id] = 0
|
||||
await message.answer("Укажите число: 0", reply_markup=get_keyboard())
|
||||
|
||||
|
||||
@dp.callback_query(F.data.startswith("num_"))
|
||||
async def callbacks_num(callback: types.CallbackQuery):
|
||||
user_value = user_data.get(callback.from_user.id, 0)
|
||||
action = callback.data.split("_")[1]
|
||||
|
||||
if action == "incr":
|
||||
user_data[callback.from_user.id] = user_value+1
|
||||
await update_num_text(callback.message, user_value+1)
|
||||
elif action == "decr":
|
||||
user_data[callback.from_user.id] = user_value-1
|
||||
await update_num_text(callback.message, user_value-1)
|
||||
elif action == "finish":
|
||||
await callback.message.edit_text(f"Итого: {user_value}")
|
||||
|
||||
await callback.answer()
|
||||
|
||||
|
||||
# пока не работает, надо понять как получить file_id
|
||||
@dp.message(Command("gif"))
|
||||
async def send_gif(message: Message):
|
||||
|
52
bot/main.py
52
bot/main.py
@ -17,7 +17,9 @@ from aiogram.types import FSInputFile, URLInputFile, BufferedInputFile
|
||||
from aiogram.utils.markdown import hide_link #для скрытой ссылки
|
||||
# новый импорт!
|
||||
from aiogram.utils.keyboard import ReplyKeyboardBuilder # для создания кнопок
|
||||
|
||||
# Новые импорты!
|
||||
from contextlib import suppress
|
||||
from aiogram.exceptions import TelegramBadRequest
|
||||
|
||||
from config_reader import config
|
||||
|
||||
@ -435,6 +437,54 @@ async def handle_contact(message: types.Message):
|
||||
else:
|
||||
await message.answer("Это не ваш контакт!")
|
||||
|
||||
# Продолжим с колбэками
|
||||
# Здесь хранятся пользовательские данные.
|
||||
# Т.к. это словарь в памяти, то при перезапуске он очистится
|
||||
user_data = {}
|
||||
#сформируем инлайн-клавиатуру
|
||||
def get_keyboard():
|
||||
buttons = [
|
||||
[
|
||||
types.InlineKeyboardButton(text="-1", callback_data="num_decr"),
|
||||
types.InlineKeyboardButton(text="+1", callback_data="num_incr")
|
||||
],
|
||||
[types.InlineKeyboardButton(text="Подтвердить", callback_data="num_finish")]
|
||||
]
|
||||
keyboard = types.InlineKeyboardMarkup(inline_keyboard=buttons)
|
||||
return keyboard
|
||||
|
||||
# формируем сообщение с переменным аргументом
|
||||
async def update_num_text(message: types.Message, new_value: int):
|
||||
with suppress(TelegramBadRequest):
|
||||
await message.edit_text(
|
||||
f"Укажите число: {new_value}",
|
||||
reply_markup=get_keyboard()
|
||||
)
|
||||
|
||||
# запуск клавиатуры по команде /numbers
|
||||
@dp.message(Command("numbers"))
|
||||
async def cmd_numbers(message: types.Message):
|
||||
user_data[message.from_user.id] = 0
|
||||
await message.answer("Укажите число: 0", reply_markup=get_keyboard())
|
||||
|
||||
|
||||
@dp.callback_query(F.data.startswith("num_"))
|
||||
async def callbacks_num(callback: types.CallbackQuery):
|
||||
user_value = user_data.get(callback.from_user.id, 0)
|
||||
action = callback.data.split("_")[1]
|
||||
|
||||
if action == "incr":
|
||||
user_data[callback.from_user.id] = user_value+1
|
||||
await update_num_text(callback.message, user_value+1)
|
||||
elif action == "decr":
|
||||
user_data[callback.from_user.id] = user_value-1
|
||||
await update_num_text(callback.message, user_value-1)
|
||||
elif action == "finish":
|
||||
await callback.message.edit_text(f"Итого: {user_value}")
|
||||
|
||||
await callback.answer()
|
||||
|
||||
|
||||
# пока не работает, надо понять как получить file_id
|
||||
@dp.message(Command("gif"))
|
||||
async def send_gif(message: Message):
|
||||
|
Loading…
x
Reference in New Issue
Block a user