diff --git a/StaphMbot.py b/StaphMbot.py
index f72e6f4..03190c6 100755
--- a/StaphMbot.py
+++ b/StaphMbot.py
@@ -386,6 +386,47 @@ def processCheck(msg,api,db):
data = db[2].data
api.sendMessage(message['message']['chat']['id'],'Checking your warnings... Not Implemented.',{'reply_to_message_id':message['message']['message_id']})
+def processUserIdIsFallbackBot(msg):
+ from_chat = "from" in msg and msg["from"] or False
+ if not from_chat:
+ return {"chat": False}
+ fwdChat = ("forward_origin" in msg and msg["forward_origin"]["type"] == "channel") and msg["forward_origin"] or False
+ if from_chat["id"] == 777000 and fwdChat: # Telegram
+ return {"type": "Link Channel", "chat": fwdChat["chat"]}
+ elif from_chat["id"] == 1087968824: # GroupAnonymousBot
+ return {"type": "Group", "chat": msg["chat"]}
+ elif from_chat["id"] == 136817688 and "sender_chat" in msg: # Channel Bot
+ return {"type": "Channel", "chat": msg["sender_chat"]};
+ return {"chat": from_chat}
+
+def processUserIdInternal(chat, type = "User"):
+ if not chat:
+ return "Unknown Data"
+ return f"{type} ID: {chat["id"]}"
+
+def processUserId(msg):
+ if "reply_to_message" in msg:
+ reply_to_message = msg["reply_to_message"]
+ if "forward_origin" in reply_to_message:
+ forward_origin = reply_to_message["forward_origin"]
+ data = {}
+ if forward_origin["type"] == "user":
+ data = {"chat": forward_origin["sender_user"]}
+ elif forward_origin["type"] == "channel":
+ t = forward_origin["chat"]["type"]
+ t = t[0].upper() + t[1:]
+ data = {"type": t, "chat": forward_origin["chat"]}
+ elif forward_origin["type"] == "chat":
+ t = forward_origin["sender_chat"]["type"]
+ t = t[0].upper() + t[1:]
+ data = {"type": t, "chat": forward_origin["sender_chat"]}
+ if data:
+ return f"Forward From {processUserIdInternal(**data)}"
+ else:
+ return f"Reply to {processUserIdInternal(**processUserIdIsFallbackBot(reply_to_message))}"
+ else:
+ return f"Your {processUserIdInternal(**processUserIdIsFallbackBot(msg))}"
+
def processItem(message,db,api):
#print(message)
api.logOut.writeln(str(message['update_id'])+' being processed...')
@@ -556,7 +597,7 @@ def processItem(message,db,api):
elif stripText == '/groupid':
api.sendMessage(message['message']['chat']['id'],'Group ID: '+str(message['message']['chat']['id'])+'',{'reply_to_message_id':message['message']['message_id']})
elif stripText == "/userid":
- api.sendMessage(message['message']['chat']['id'],'User ID: '+str(message['message']['reply_to_message']['forward_from']['id'] if ('reply_to_message' in message['message'] and 'forward_from' in message['message']['reply_to_message']) else message['message']['reply_to_message']['from']['id'] if 'reply_to_message' in message['message'] else message['message']['from']['id'])+'',{'reply_to_message_id':message['message']['message_id']})
+ api.sendMessage(message['message']['chat']['id'],processUserId(message),{'reply_to_message_id':message['message']['message_id']})
elif stripText == '/lastid':
api.sendMessage(message['message']['chat']['id'],'Last Message ID: '+str(message['update_id'])+'',{'reply_to_message_id':message['message']['message_id']})
elif stripText == '/uptime':