Как создать код для inline кнопки с callback в vkbottle?

Можете, пожалуйста, предоставить готовый код для создания inline callback кнопки, который я смогу адаптировать под свои цели? Благодарю за помощь заранее!
  • 3 марта 2024 г. 21:48
Ответы на вопрос 2
Конечно, вот пример кода для создания inline callback кнопки в vkbottle:

```python
from vkbottle.bot import Bot, Message
from vkbottle import Keyboard, KeyboardButtonColor, Text

bot = Bot(token="your_token_here")

@bot.on.message(text="/start")
async def start(message: Message):
    keyboard = Keyboard()
    keyboard.add(Text("Нажми меня", payload={"command": "button_clicked"}), color=KeyboardButtonColor.PRIMARY)
    
    await message.answer("Привет! Нажми на кнопку", keyboard=keyboard)

@bot.on.raw_event()
async def handle_event(event: dict):
    if event["type"] == "message_new":
        payload = event["object"]["message"]["payload"]
        
        if payload.get("command") == "button_clicked":
            user_id = event["object"]["message"]["from_id"]
            await bot.api.messages.send(user_id=user_id, message="Кнопка была нажата!")

bot.run_forever()
```

Этот код создает бота, который отправляет сообщение с inline кнопкой при команде `/start`. При нажатии на кнопку, бот отправляет сообщение "Кнопка была нажата!".

Вы можете адаптировать этот код под свои цели, изменив текст кнопки, сообщение и обработку события нажатия кнопки. Успехов в разработке!
from vkbottle import Bot, Message 
from vkbottle.rule import FromMe
from vkbottle.dispatch.rules.bot import Command
from vkbottle_types import BaseStateGroup, Keyboard, KeyboardButtonColor
from vkbottle_types.events import EventId

bot = Bot("your-token")

class MyStates(BaseStateGroup):
FIRST_STATE = 1

@bot.on.message(FromMe(), Command("start"))
async def wrapper(ans: Message):
keyboard = (
Keyboard(one_time=True)
.add_text("Нажми на меня", {"button": "1"}, color=KeyboardButtonColor.POSITIVE)
.get_json()
)
await ans("Привет, нажми на кнопку!", keyboard=keyboard)

@bot.on.event.message_new.data("button")
async def wrapper(ans: Message):
await ans("Вы нажали на кнопку!")

bot.run_polling()
Похожие вопросы