Testing fabrics for inline keyboards
This commit is contained in:
parent
d187f33abc
commit
bcbed0a4c1
|
@ -3,3 +3,4 @@ from . import start
|
||||||
from . import echo
|
from . import echo
|
||||||
from . import add
|
from . import add
|
||||||
from . import settings
|
from . import settings
|
||||||
|
from . import test
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
from aiogram import types
|
from aiogram import types
|
||||||
from aiogram.dispatcher.filters.builtin import Command
|
|
||||||
|
|
||||||
from loader import dp
|
from loader import dp
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,18 +6,18 @@ from loader import dp
|
||||||
async def bot_add(message: types.Message):
|
async def bot_add(message: types.Message):
|
||||||
await message.answer(f"This is ADD command, {message.from_user.username}!")
|
await message.answer(f"This is ADD command, {message.from_user.username}!")
|
||||||
|
|
||||||
@dp.message_handler(state=None) # todo сделать стейты. сейчас это хэндлит все сообщения в любых состояниях!
|
# @dp.message_handler(state=None) # todo сделать стейты. сейчас это хэндлит все сообщения в любых состояниях!
|
||||||
async def bot_add_parse_message(message: types.Message):
|
# async def bot_add_parse_message(message: types.Message):
|
||||||
words = message.text.split()
|
# words = message.text.split()
|
||||||
# Uncomment to see debug in console
|
# # Uncomment to see debug in console
|
||||||
# print('Split message:')
|
# # print('Split message:')
|
||||||
# i = 0
|
# # i = 0
|
||||||
# for each in words:
|
# # for each in words:
|
||||||
# print('[' + str(i) + ']: ' + '[' + each + ']')
|
# # print('[' + str(i) + ']: ' + '[' + each + ']')
|
||||||
# i += 1
|
# # i += 1
|
||||||
# print('[end]')
|
# # print('[end]')
|
||||||
|
#
|
||||||
if len(words) == 2:
|
# if len(words) == 2:
|
||||||
await message.answer('[added] ' + words[0] + ' ' + words[1])
|
# await message.answer('[added] ' + words[0] + ' ' + words[1])
|
||||||
else:
|
# else:
|
||||||
await message.answer("can't parse. wrong arguments!")
|
# await message.answer("can't parse. wrong arguments!")
|
||||||
|
|
|
@ -12,7 +12,8 @@ async def bot_help(message: types.Message):
|
||||||
"/add - Add expense.",
|
"/add - Add expense.",
|
||||||
"/edit - Edit expense.",
|
"/edit - Edit expense.",
|
||||||
"/list - See my expenses.",
|
"/list - See my expenses.",
|
||||||
"/settings - Configure bot."
|
"/settings - Configure bot.",
|
||||||
|
"/test - Test command."
|
||||||
)
|
)
|
||||||
|
|
||||||
await message.answer("\n".join(text))
|
await message.answer("\n".join(text))
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
from aiogram import types
|
||||||
|
|
||||||
|
|
||||||
|
from loader import dp
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message_handler(commands="test")
|
||||||
|
async def cmd_random(message: types.Message):
|
||||||
|
keyboard = types.InlineKeyboardMarkup()
|
||||||
|
keyboard.add(types.InlineKeyboardButton(text="Нажми меня", callback_data="random_value"))
|
||||||
|
keyboard.add(types.InlineKeyboardButton(text="Нажми меня 2", callback_data="random_value2"))
|
||||||
|
await message.answer("test reply 1-2-3", reply_markup=keyboard)
|
||||||
|
|
||||||
|
|
||||||
|
@dp.callback_query_handler(text="random_value")
|
||||||
|
async def send_random_value(call: types.CallbackQuery):
|
||||||
|
await call.message.answer('test reply 1')
|
||||||
|
# shows alert with 'Ok' button
|
||||||
|
await call.answer(text="Спасибо, что воспользовались ботом!", show_alert=True)
|
||||||
|
# или просто await call.answer()
|
||||||
|
|
||||||
|
|
||||||
|
@dp.callback_query_handler(text="random_value2")
|
||||||
|
async def send_random_value(call: types.CallbackQuery):
|
||||||
|
await call.message.answer('test reply 2')
|
||||||
|
await call.answer()
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
from aiogram.utils.callback_data import CallbackData
|
||||||
|
from aiogram.utils.exceptions import MessageNotModified
|
||||||
|
from contextlib import suppress
|
||||||
|
# fabnum - префикс, action - название аргумента, которым будем передавать значение
|
||||||
|
callback_numbers = CallbackData("fabnum", "action")
|
||||||
|
# Здесь хранятся пользовательские данные.
|
||||||
|
# Т.к. это словарь в памяти, то при перезапуске он очистится
|
||||||
|
user_data = {}
|
||||||
|
|
||||||
|
|
||||||
|
def get_keyboard_fab():
|
||||||
|
buttons = [
|
||||||
|
types.InlineKeyboardButton(text="-1", callback_data=callback_numbers.new(action="decr")),
|
||||||
|
types.InlineKeyboardButton(text="+1", callback_data=callback_numbers.new(action="incr")),
|
||||||
|
types.InlineKeyboardButton(text="Подтвердить", callback_data=callback_numbers.new(action="finish"))
|
||||||
|
]
|
||||||
|
keyboard = types.InlineKeyboardMarkup(row_width=2)
|
||||||
|
keyboard.add(*buttons)
|
||||||
|
return keyboard
|
||||||
|
|
||||||
|
|
||||||
|
async def update_num_text_fab(message: types.Message, new_value: int):
|
||||||
|
with suppress(MessageNotModified):
|
||||||
|
await message.edit_text(f"Укажите число: {new_value}", reply_markup=get_keyboard_fab())
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message_handler(commands="numbers_fab")
|
||||||
|
async def cmd_numbers(message: types.Message):
|
||||||
|
user_data[message.from_user.id] = 0
|
||||||
|
await message.answer("Укажите число: 0", reply_markup=get_keyboard_fab())
|
||||||
|
|
||||||
|
|
||||||
|
@dp.callback_query_handler(callback_numbers.filter(action=["incr", "decr"]))
|
||||||
|
async def callbacks_num_change_fab(call: types.CallbackQuery, callback_data: dict):
|
||||||
|
user_value = user_data.get(call.from_user.id, 0)
|
||||||
|
action = callback_data["action"]
|
||||||
|
if action == "incr":
|
||||||
|
user_data[call.from_user.id] = user_value + 1
|
||||||
|
await update_num_text_fab(call.message, user_value + 1)
|
||||||
|
elif action == "decr":
|
||||||
|
user_data[call.from_user.id] = user_value - 1
|
||||||
|
await update_num_text_fab(call.message, user_value - 1)
|
||||||
|
await call.answer()
|
||||||
|
|
||||||
|
|
||||||
|
@dp.callback_query_handler(callback_numbers.filter(action=["finish"]))
|
||||||
|
async def callbacks_num_finish_fab(call: types.CallbackQuery):
|
||||||
|
user_value = user_data.get(call.from_user.id, 0)
|
||||||
|
await call.message.edit_text(f"Итого: {user_value}")
|
||||||
|
await call.answer()
|
|
@ -10,7 +10,7 @@ async def set_default_commands(dp):
|
||||||
types.BotCommand("edit", "Edit expense."),
|
types.BotCommand("edit", "Edit expense."),
|
||||||
types.BotCommand("list", "See my expenses."),
|
types.BotCommand("list", "See my expenses."),
|
||||||
types.BotCommand("settings", "Configure bot."),
|
types.BotCommand("settings", "Configure bot."),
|
||||||
# types.BotCommand("settings2", "Configure bot."),
|
types.BotCommand("test", "Test command."),
|
||||||
# types.BotCommand("settings3", "Configure bot."),
|
# types.BotCommand("settings3", "Configure bot."),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue