示例#1
0
    def get_json(self) -> str:
        data = json.dumps(
            {
                "one_time": self.one_time,
                "inline": self.inline,
                "buttons": [[button.get_data() for button in row] for row in self.buttons],
            }
        )

        if isinstance(data, bytes):
            return data.decode("utf-8")
        return data.encode("utf-8").decode("utf-8")
示例#2
0
 async def validate(self, request: dict) -> dict:
     for k, v in request.copy().items():
         if isinstance(v, list):
             request[k] = ",".join(str(e) for e in v)
         elif isinstance(v, bool):
             request[k] = int(v)
         elif isinstance(v, BaseModel):
             request[k] = v.json(exclude_none=True, encoder=json.dumps)
         elif isinstance(v, dict):
             request[k] = json.dumps(await self.validate(v))
         elif v is None:
             del request[k]
     return request
示例#3
0
async def handle_message_event(event: GroupTypes.MessageEvent):
    # event_data parameter accepts three object types
    # "show_snackbar" type

    await bot.api.messages.send_message_event_answer(
        event_id=event.object.event_id,
        user_id=event.object.user_id,
        peer_id=event.object.peer_id,
        event_data=json.dumps({
            "type": "show_snackbar",
            "text": "Сейчас я исчезну"
        }),
    )
示例#4
0
def keyboard_gen(pattern: List[List[dict]],
                 one_time: bool = False,
                 inline: bool = False):
    """ Simple keyboard generator
    :param pattern: Keyboard simple pattern, check github readme
    :param one_time: Should keyboard be hidden after first use?
    :param inline: Should keyboard be inline?
    :return: VK Api Keyboard JSON
    """
    warn("keyboard_gen generator is obsolete, use Keyboard instead",
         DeprecationWarning)

    rows = pattern
    buttons = list()

    for row in rows:
        row_buttons = list()
        for button in row:
            action = dict()
            fields = dict()

            action["type"] = button.get("type", "text")
            action.update({
                k: v
                for k, v in button.items()
                if k not in ("type", "text", "color")
            })

            if action["type"] == "text":
                action["label"] = button.get("text", button.get("label"))

            if button.get("color"):
                fields["color"] = button["color"]

            row_button = {"action": action, **fields}

            row_buttons.append(row_button)
        buttons.append(row_buttons)

    keyboard = str(
        json.dumps(dict(one_time=one_time, inline=inline,
                        buttons=buttons)).encode("utf-8").decode("utf-8"))

    return keyboard
示例#5
0
from vkbottle.modules import json

KEYBOARD_JSON = json.dumps({
    "one_time":
    True,
    "inline":
    False,
    "buttons": [
        [{
            "action": {
                "label": "I love nuggets",
                "payload": {
                    "love": "nuggets"
                },
                "type": "text",
            }
        }],
        [{
            "action": {
                "label": "Eat nuggets",
                "payload": {
                    "eat": "nuggets"
                },
                "type": "callback",
            },
            "color": "positive"
        }],
    ],
})

ctx_storage = CtxStorage()
示例#6
0
def template_gen(*e: TemplateElement):
    """ Generates dumped carousel out of box """
    return json.dumps({"type": "carousel", "elements": [e.raw for e in e]})