Answer the question
In order to leave comments, you need to log in
Installing and updating the VKontakte widget using Python?
I want to make a widget for a VKontakte group using Python. The problem is that VK wants the java code. And plus you need the code to return a widget. How to make a return in a request in Python?
vk = vk_api.VkApi(token = token)
widget = {
"title": "My Table",
"title_url": "https://link",
"title_counter": 31,
"more": "Посмотреть все результаты",
"more_url": "https://link2",
"head": [{
"text": "Название первой колонки"
}, {
"text": "Название второй колонки",
"align": "center"
}],
"body": [
[{
"text": "Это первая ячейка первой строки",
"icon_id": "3484735_23434324"
},
{
"text": "Это вторая ячейка первой строки",
"url": "https://vk.com/wall-12345_542321"
}],
[{
"text": "Это первая ячейка второй строки",
"icon_id": "3484735_23434324"
},
{
"text": "Это вторая ячейка второй строки",
"url": "https://vk.com/wall-12345_54321"
}
]
]
}
vk.method('appWidgets.update', {"code": widget, "type": 'table'})
vk_api.exceptions.ApiError: [12] Unable to compile code: undefined identifier 'body' in line 1
vk = vk_api.VkApi(token = token)
widget = str({
"title": "My Table",
"title_url": "https://link",
"title_counter": 31,
"more": "Посмотреть все результаты",
"more_url": "https://link2",
"head": [{
"text": "Название первой колонки"
}, {
"text": "Название второй колонки",
"align": "center"
}],
"body": [
[{
"text": "Это первая ячейка первой строки",
"icon_id": "3484735_23434324"
},
{
"text": "Это вторая ячейка первой строки",
"url": "https://vk.com/wall-12345_542321"
}],
[{
"text": "Это первая ячейка второй строки",
"icon_id": "3484735_23434324"
},
{
"text": "Это вторая ячейка второй строки",
"url": "https://vk.com/wall-12345_54321"
}
]
]
})
vk.method('appWidgets.update', {"code": widget, "type": 'table'})
vk_api.exceptions.ApiError: [12] Unable to compile code: ';' expected, ' in line 1
Answer the question
In order to leave comments, you need to log in
Firstly
code must return a JSON object describing the widget.
return {
widget
};
Operators must be separated by semicolons.
widget = str({
"title": "My Table",
"title_url": "https://vk.com/id1",
"title_counter": 31,
"more": "Посмотреть все результаты",
"more_url": "https://vk.com/id2",
"head": [{
"text": "Название первой колонки"
}, {
"text": "Название второй колонки",
"align": "center"
}],
"body": [
[{
"text": "Это первая ячейка первой строки",
"icon_id": "id1"
},
{
"text": "Это вторая ячейка первой строки",
"url": "https://vk.com/wall-12345_542321"
}],
[{
"text": "Это первая ячейка второй строки",
"icon_id": "id2"
},
{
"text": "Это вторая ячейка второй строки",
"url": "https://vk.com/wall-12345_54321"
}
]
]
})
code = f"return {widget};"
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question