txlyre 2 years ago
parent
commit
4a9749503e
3 changed files with 24 additions and 6 deletions
  1. 13 4
      commands.py
  2. 10 1
      openkriemy.py
  3. 1 1
      utils.py

+ 13 - 4
commands.py

@@ -151,15 +151,21 @@ async def make_message_shot(bot, message):
   output_path = make_temporary_filename('png')
   avatar_path = make_temporary_filename('png')
 
-  await bot.download_profile_photo(message.sender, file=avatar_path)
+  if message.sender is None:
+    await bot.download_profile_photo(message.peer_id.channel_id, file=avatar_path)
 
-  full_name = get_display_name(message.sender)
+    full_name = await bot.get_entity(message.peer_id.channel_id)
+    full_name = full_name.title
+  else:
+    await bot.download_profile_photo(message.sender, file=avatar_path)
+
+    full_name = get_display_name(message.sender)
 
   data = dumps({
     'output_path': output_path,
     'avatar_path': avatar_path,
     'username': full_name if full_name else message.sender.username,
-    'username_color': await assign_color(message.sender.id),
+    'username_color': await assign_color(message.sender.id if message.sender else message.peer_id.channel_id),
     'text': message.text
   }).encode('UTF-8')
 
@@ -180,13 +186,16 @@ async def save_handler(bot, event, command):
   if command.argc >= 1:
     emoji = command.args[0]
 
-    if not is_emoji(emoji):
+    if len(emoji) not in range(1, 6)\
+    or not all(map(is_emoji, emoji)):
       await event.reply('Указан некорректный эмодзи!!!')
 
       return
 
   path = await make_message_shot(bot, message)
 
+  return
+
   try:
     file = await add_sticker(bot, path, emoji)
     

+ 10 - 1
openkriemy.py

@@ -67,6 +67,9 @@ async def on_message(event):
       reply_to = target
       target = target.sender
 
+    if target is None:
+      target = await bot.get_entity(event.peer_id.channel_id)
+
     if action.kind == Kind.CANNOT_APPLY_TO_SELF\
    and target.id == event.sender.id:
       await event.reply('Данное действие нельзя применять к самому себе...')
@@ -78,8 +81,14 @@ async def on_message(event):
   except:
     pass
     
+  if event.sender is None:
+    initiator = await bot.get_entity(event.peer_id.channel_id)
+    initiator = initiator.title
+  else:
+    initiator = get_link_to_user(event.sender)
+
   text = action.template.format(**{
-    'initiator': get_link_to_user(event.sender),
+    'initiator': initiator,
     'target': get_link_to_user(target) if target else '?'
   })
   

+ 1 - 1
utils.py

@@ -53,7 +53,7 @@ def get_link_to_user(user):
   if user.username:
     return f'[{full_name}](@{user.username})'
 
-  return full_name
+  return f'[{full_name}](tg://user?id={user.id})'
 
 def is_valid_name(name):
   return name.isidentifier()