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.markdown import hide_link #для скрытой ссылки
|
||||||
# новый импорт!
|
# новый импорт!
|
||||||
from aiogram.utils.keyboard import ReplyKeyboardBuilder # для создания кнопок
|
from aiogram.utils.keyboard import ReplyKeyboardBuilder # для создания кнопок
|
||||||
|
# Новые импорты!
|
||||||
|
from contextlib import suppress
|
||||||
|
from aiogram.exceptions import TelegramBadRequest
|
||||||
|
|
||||||
|
|
||||||
from config_reader import config
|
from config_reader import config
|
||||||
@ -435,6 +438,54 @@ async def handle_contact(message: types.Message):
|
|||||||
else:
|
else:
|
||||||
await message.answer("Это не ваш контакт!")
|
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
|
# пока не работает, надо понять как получить file_id
|
||||||
@dp.message(Command("gif"))
|
@dp.message(Command("gif"))
|
||||||
async def send_gif(message: Message):
|
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.markdown import hide_link #для скрытой ссылки
|
||||||
# новый импорт!
|
# новый импорт!
|
||||||
from aiogram.utils.keyboard import ReplyKeyboardBuilder # для создания кнопок
|
from aiogram.utils.keyboard import ReplyKeyboardBuilder # для создания кнопок
|
||||||
|
# Новые импорты!
|
||||||
|
from contextlib import suppress
|
||||||
|
from aiogram.exceptions import TelegramBadRequest
|
||||||
|
|
||||||
from config_reader import config
|
from config_reader import config
|
||||||
|
|
||||||
@ -435,6 +437,54 @@ async def handle_contact(message: types.Message):
|
|||||||
else:
|
else:
|
||||||
await message.answer("Это не ваш контакт!")
|
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
|
# пока не работает, надо понять как получить file_id
|
||||||
@dp.message(Command("gif"))
|
@dp.message(Command("gif"))
|
||||||
async def send_gif(message: Message):
|
async def send_gif(message: Message):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user