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")
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
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": "Сейчас я исчезну" }), )
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
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()
def template_gen(*e: TemplateElement): """ Generates dumped carousel out of box """ return json.dumps({"type": "carousel", "elements": [e.raw for e in e]})