コード例 #1
0
ファイル: Get.cs プロジェクト: unified-ban/Terminal
        public void Execute(Message message)
        {
            Manager.BotClient.DeleteMessageAsync(message.Chat.Id, message.MessageId);

            string dataMessage = "*[Report]*\nRequested information:\n\n";
            int    userId      = 0;

            if (message.ReplyToMessage == null && message.ForwardFromMessageId == 0)
            {
                string[] arguments = message.Text.Split(" ");
                if (arguments.Count() == 2)
                {
                    TryGetFromId(message);
                    return;
                }
                else if (arguments.Count() > 2)
                {
                    MessageQueueManager.EnqueueMessage(
                        new Models.ChatMessage()
                    {
                        Timestamp = DateTime.UtcNow,
                        Chat      = message.Chat,
                        ParseMode = ParseMode.Markdown,
                        Text      = "*Error:* too many arguments."
                    });
                    return;
                }
                userId       = message.From.Id;
                dataMessage += "*Chat Id:* {{chat_id}}\n";
                dataMessage += "*User Id:* {{from_id}}\n";
                dataMessage += "*Username:* `{{from_username}}`\n";
                dataMessage += "*Is bot:* {{from_isBot}}\n";
            }
            else if (message.ReplyToMessage != null)
            {
                if (message.ReplyToMessage.ForwardFrom != null)
                {
                    userId       = message.ReplyToMessage.ForwardFrom.Id;
                    dataMessage += "*Chat Id:* {{replyToMessage_forwardFrom_chat_id}}\n";
                    dataMessage += "*User Id:* {{replyToMessage_forwardFrom_from_id}}\n";
                    dataMessage += "*Username:* `{{replyToMessage_forwardFrom_from_username}}`\n";
                    dataMessage += "*Is bot:* {{replyToMessage_forwardFrom_from_isBot}}\n";
                }
                else
                {
                    userId       = message.ReplyToMessage.From.Id;
                    dataMessage += "*Chat Id:* {{replyToMessage_chat_id}}\n";
                    dataMessage += "*User Id:* {{replyToMessage_from_id}}\n";
                    dataMessage += "*Username:* `{{replyToMessage_from_username}}`\n";
                    dataMessage += "*Is bot:* {{replyToMessage_from_isBot}}\n";
                }
            }
            else if (message.ForwardFrom != null)
            {
                userId       = message.ForwardFrom.Id;
                dataMessage += "*Chat Id:* {{forwardFrom_chat_id}}\n";
                dataMessage += "*User Id:* {{forwardFrom_from_id}}\n";
                dataMessage += "*Username:* `{{forwardFrom_from_username}}`\n";
                dataMessage += "*Is bot:* {{forwardFrom_from_isBot}}\n";
            }

            int trustPoints = 100;

            if (CacheData.TrustFactors.ContainsKey(userId))
            {
                trustPoints = CacheData.TrustFactors[userId].Points;
            }
            dataMessage += $"*Trust factor:* { trustPoints }/100 { (trustPoints < 71 ? " ⚠️" : "") }\n";
            Models.User.Banned isBlacklisted = CacheData.BannedUsers
                                               .SingleOrDefault(x => x.TelegramUserId == userId);
            dataMessage += $"*Is blacklisted:* { (isBlacklisted == null ? "no ✅" : "*yes* ❗️")}\n";
            if (isBlacklisted != null)
            {
                dataMessage += $"*Listing reason:* { isBlacklisted.Reason.ToString() }\n";
                dataMessage += $"*Listed on:* { isBlacklisted.UtcDate }\n";
            }

            string parsedText = Utils.Parsers.VariablesParser(dataMessage, message);

            MessageQueueManager.EnqueueMessage(
                new Models.ChatMessage()
            {
                Timestamp = DateTime.UtcNow,
                Chat      = message.Chat,
                ParseMode = ParseMode.Markdown,
                Text      = parsedText
            });
            Manager.BotClient.SendTextMessageAsync(
                chatId: CacheData.ControlChatId,
                parseMode: ParseMode.Markdown,
                text: parsedText + String.Format(
                    "\n*hash_code:* #UB{0}-{1}",
                    message.Chat.Id.ToString().Replace("-", ""),
                    Guid.NewGuid())
                );
        }
コード例 #2
0
ファイル: Get.cs プロジェクト: unified-ban/Terminal
        private void TryGetFromId(Message message)
        {
            string user            = message.Text.Split(" ")[1];
            bool   isValidId       = int.TryParse(user, out int userId);
            bool   isValidUsername = user.StartsWith("@");

            if (!isValidId && !isValidUsername)
            {
                MessageQueueManager.EnqueueMessage(
                    new Models.ChatMessage()
                {
                    Timestamp = DateTime.UtcNow,
                    Chat      = message.Chat,
                    ParseMode = ParseMode.Markdown,
                    Text      = "*Error:* invalid user reference. Please provide user id or username."
                });
                return;
            }

            if (isValidUsername)
            {
                if (!CacheData.Usernames.TryGetValue(user.Remove(0, 1), out userId))
                {
                    MessageQueueManager.EnqueueMessage(
                        new Models.ChatMessage()
                    {
                        Timestamp = DateTime.UtcNow,
                        Chat      = message.Chat,
                        ParseMode = ParseMode.Markdown,
                        Text      = "*Error:* username not in cache. Please try with user id or quote user's message."
                    });
                    return;
                }
            }

            string dataMessage = "*[Report]*\nRequested (partial) information:\n\n";

            dataMessage += $"*Chat Id:* { message.Chat.Id }\n";
            dataMessage += $"*User Id:* { userId }\n";
            if (isValidUsername)
            {
                dataMessage += $"*Username:* { user.Remove(0,1) }\n";
            }

            int trustPoints = 100;

            if (CacheData.TrustFactors.ContainsKey(userId))
            {
                trustPoints = CacheData.TrustFactors[userId].Points;
            }
            dataMessage += $"*Trust factor:* { trustPoints }/100 { (trustPoints < 71 ? " ⚠️" : "") }\n";
            Models.User.Banned isBlacklisted = CacheData.BannedUsers
                                               .SingleOrDefault(x => x.TelegramUserId == userId);
            dataMessage += $"*Is blacklisted:* { (isBlacklisted == null ? "no ✅" : "*yes* ❗️")}\n";
            if (isBlacklisted != null)
            {
                dataMessage += $"*Listing reason:* { isBlacklisted.Reason.ToString() }\n";
                dataMessage += $"*Listed on:* { isBlacklisted.UtcDate }\n";
            }

            string parsedText = Utils.Parsers.VariablesParser(dataMessage, message);

            MessageQueueManager.EnqueueMessage(
                new Models.ChatMessage()
            {
                Timestamp = DateTime.UtcNow,
                Chat      = message.Chat,
                ParseMode = ParseMode.Markdown,
                Text      = parsedText
            });
            Manager.BotClient.SendTextMessageAsync(
                chatId: CacheData.ControlChatId,
                parseMode: ParseMode.Markdown,
                text: parsedText + String.Format(
                    "\n*hash_code:* #UB{0}-{1}",
                    message.Chat.Id.ToString().Replace("-", ""),
                    Guid.NewGuid())
                );
        }