stickerset.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from typing import List
  2. from pyrogram import Client, raw
  3. from pyrogram import errors
  4. async def get_sticker_set_by_name(client: Client, name: str) -> raw.base.messages.StickerSet:
  5. try:
  6. return await client.send(
  7. raw.functions.messages.GetStickerSet(
  8. stickerset = raw.types.InputStickerSetShortName(short_name=name)
  9. )
  10. )
  11. except errors.exceptions.not_acceptable_406.StickersetInvalid:
  12. return None
  13. # Known errors: (I don't see a reason to catch them as we, for sure, won't face them right now):
  14. # errors.exceptions.bad_request_400.PackShortNameInvalid -> pack name needs to end with _by_botname
  15. # errors.exceptions.bad_request_400.ShortnameOccupyFailed -> pack's name is already in use
  16. async def create_sticker_set(client: Client, owner: int, title: str, short_name: str, stickers: List[raw.base.InputStickerSetItem]) -> raw.base.messages.StickerSet:
  17. return await client.send(
  18. raw.functions.stickers.CreateStickerSet(
  19. user_id=await client.resolve_peer(owner),
  20. title=title,
  21. short_name=short_name,
  22. stickers=stickers
  23. )
  24. )
  25. async def add_sticker_to_set(client: Client, stickerset: raw.base.messages.StickerSet, sticker: raw.base.InputStickerSetItem) -> raw.base.messages.StickerSet:
  26. return await client.send(
  27. raw.functions.stickers.AddStickerToSet(
  28. stickerset=raw.types.InputStickerSetShortName(short_name=stickerset.set.short_name),
  29. sticker=sticker
  30. )
  31. )
  32. async def create_sticker(sticker: raw.base.InputDocument, emoji: str) -> raw.base.InputStickerSetItem:
  33. return raw.types.InputStickerSetItem(document=sticker, emoji=emoji)