153 lines
3.8 KiB
Python
153 lines
3.8 KiB
Python
import asyncio
|
||
import logging
|
||
|
||
from maxapi import Bot, Dispatcher
|
||
|
||
# Кнопки
|
||
from maxapi.types import (
|
||
ChatButton,
|
||
LinkButton,
|
||
CallbackButton,
|
||
RequestGeoLocationButton,
|
||
MessageButton,
|
||
ButtonsPayload, # Для постройки клавиатуры без InlineKeyboardBuilder
|
||
RequestContactButton,
|
||
OpenAppButton,
|
||
)
|
||
|
||
from maxapi.types import (
|
||
MessageCreated,
|
||
MessageCallback,
|
||
MessageChatCreated,
|
||
CommandStart,
|
||
Command
|
||
)
|
||
|
||
from maxapi.utils.inline_keyboard import InlineKeyboardBuilder
|
||
|
||
logging.basicConfig(level=logging.INFO)
|
||
|
||
bot = Bot('тут_ваш_токен')
|
||
dp = Dispatcher()
|
||
|
||
|
||
@dp.message_created(CommandStart())
|
||
async def echo(event: MessageCreated):
|
||
await event.message.answer(
|
||
(
|
||
'Привет! Мои команды:\n\n'
|
||
|
||
'/builder - Клавиатура из InlineKeyboardBuilder\n'
|
||
'/pyaload - Клавиатура из pydantic моделей\n'
|
||
)
|
||
)
|
||
|
||
|
||
@dp.message_created(Command('builder'))
|
||
async def echo(event: MessageCreated):
|
||
builder = InlineKeyboardBuilder()
|
||
|
||
builder.row(
|
||
ChatButton(
|
||
text="Создать чат",
|
||
chat_title='Test',
|
||
chat_description='Test desc'
|
||
),
|
||
LinkButton(
|
||
text="Канал разработчика",
|
||
url="https://t.me/loveapples_dev"
|
||
),
|
||
)
|
||
|
||
builder.row(
|
||
RequestGeoLocationButton(text="Геолокация"),
|
||
MessageButton(text="Сообщение"),
|
||
)
|
||
|
||
builder.row(
|
||
RequestContactButton(text="Контакт"),
|
||
OpenAppButton(
|
||
text="Приложение",
|
||
web_app=event.bot.me.username,
|
||
contact_id=event.bot.me.user_id
|
||
),
|
||
)
|
||
|
||
builder.row(
|
||
CallbackButton(
|
||
text='Callback',
|
||
payload='test',
|
||
)
|
||
)
|
||
|
||
await event.message.answer(
|
||
text='Клавиатура из InlineKeyboardBuilder',
|
||
attachments=[
|
||
builder.as_markup()
|
||
])
|
||
|
||
|
||
@dp.message_created(Command('payload'))
|
||
async def echo(event: MessageCreated):
|
||
buttons = [
|
||
[
|
||
# кнопку типа "chat" убрали из документации,
|
||
# возможны баги
|
||
ChatButton(
|
||
text="Создать чат",
|
||
chat_title='Test',
|
||
chat_description='Test desc'
|
||
),
|
||
LinkButton(
|
||
text="Канал разработчика",
|
||
url="https://t.me/loveapples_dev"
|
||
),
|
||
],
|
||
[
|
||
RequestGeoLocationButton(text="Геолокация"),
|
||
MessageButton(text="Сообщение"),
|
||
],
|
||
[
|
||
RequestContactButton(text="Контакт"),
|
||
OpenAppButton(
|
||
text="Приложение",
|
||
web_app=event.bot.me.username,
|
||
contact_id=event.bot.me.user_id
|
||
),
|
||
],
|
||
[
|
||
CallbackButton(
|
||
text='Callback',
|
||
payload='test',
|
||
)
|
||
]
|
||
]
|
||
|
||
buttons_payload = ButtonsPayload(buttons=buttons).pack()
|
||
|
||
await event.message.answer(
|
||
text='Клавиатура из pydantic моделей',
|
||
attachments=[
|
||
buttons_payload
|
||
])
|
||
|
||
|
||
@dp.message_chat_created()
|
||
async def callback(obj: MessageChatCreated):
|
||
await obj.bot.send_message(
|
||
chat_id=obj.chat.chat_id,
|
||
text=f'Чат создан! Ссылка: {obj.chat.link}'
|
||
)
|
||
|
||
|
||
@dp.message_callback()
|
||
async def callback(callback: MessageCallback):
|
||
await callback.message.answer('Вы нажали на Callback!')
|
||
|
||
|
||
async def main():
|
||
await dp.start_polling(bot)
|
||
|
||
|
||
if __name__ == '__main__':
|
||
asyncio.run(main()) |