Merge pull request #879 from mautrix/stickersets

Add provisioning API function to get list of user's sticker sets
This commit is contained in:
vurpo
2023-01-02 16:27:40 +02:00
committed by GitHub
@@ -21,6 +21,7 @@ import json
import logging import logging
from aiohttp import web from aiohttp import web
from telethon.tl.functions.messages import GetAllStickersRequest
from telethon.tl.types import ChannelForbidden, ChatForbidden, TypeChat, User as TLUser from telethon.tl.types import ChannelForbidden, ChatForbidden, TypeChat, User as TLUser
from telethon.utils import get_peer_id, resolve_id from telethon.utils import get_peer_id, resolve_id
@@ -72,6 +73,8 @@ class ProvisioningAPI(AuthAPI):
) )
self.app.router.add_route("POST", f"{user_prefix}/pm/{{identifier}}", self.start_dm) self.app.router.add_route("POST", f"{user_prefix}/pm/{{identifier}}", self.start_dm)
self.app.router.add_route("GET", f"{user_prefix}/stickersets", self.get_stickersets)
self.app.router.add_route("POST", f"{user_prefix}/retry_takeout", self.retry_takeout) self.app.router.add_route("POST", f"{user_prefix}/retry_takeout", self.retry_takeout)
self.app.router.add_route("POST", f"{user_prefix}/logout", self.logout) self.app.router.add_route("POST", f"{user_prefix}/logout", self.logout)
@@ -497,6 +500,18 @@ class ProvisioningAPI(AuthAPI):
status=201 if just_created else 200, status=201 if just_created else 200,
) )
async def get_stickersets(self, request: web.Request) -> web.Response:
_, user, err = await self.get_user_request_info(
request, expect_logged_in=True, want_data=False
)
if err is not None:
return err
result = await user.client(GetAllStickersRequest(0))
resp = []
for stickerset in result.sets:
resp.append(stickerset.short_name)
return web.json_response(resp, status=200)
async def retry_takeout(self, request: web.Request) -> web.Response: async def retry_takeout(self, request: web.Request) -> web.Response:
data, user, err = await self.get_user_request_info( data, user, err = await self.get_user_request_info(
request, expect_logged_in=True, want_data=False request, expect_logged_in=True, want_data=False