public void Execute(Message message) { Manager.BotClient.DeleteMessageAsync(message.Chat.Id, message.MessageId); string text = Utils.Parsers.VariablesParser(CacheData.SysConfigs .Single(x => x.SysConfigId == "HelpMenu") .Value); if (ChatTools.IsUserAdmin(message.Chat.Id, message.From.Id)) { text += Environment.NewLine; text += CacheData.SysConfigs .Single(x => x.SysConfigId == "HelpMenuAdmin") .Value; } if (BotTools.IsUserOperator(message.From.Id)) { text += Environment.NewLine; text += CacheData.SysConfigs .Single(x => x.SysConfigId == "HelpMenuOperatorBase") .Value; if (BotTools.IsUserOperator(message.From.Id, Models.Operator.Levels.Advanced)) { text += Environment.NewLine; text += CacheData.SysConfigs .Single(x => x.SysConfigId == "HelpMenuOperatorAdv") .Value; } } text += Environment.NewLine; text += Environment.NewLine; text += "* usernames are saved in cache and never stored on database or file. The cache is cleared at every reboot or update."; MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, ParseMode = ParseMode.Html, Text = text }); }
public void Execute(Message message) { Manager.BotClient.DeleteMessageAsync(message.Chat.Id, message.MessageId); if (!BotTools.IsUserOperator(message.From.Id) && !ChatTools.IsUserAdmin(message.Chat.Id, message.From.Id)) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, ReplyToMessageId = message.MessageId, Text = CacheData.GetTranslation("en", "error_not_auth_command") }); return; } int userToKick; if (message.ReplyToMessage == null) { if (message.Text.Split(" ")[1].StartsWith("@")) { if (!CacheData.Usernames.Keys.Contains(message.Text.Split(" ")[1].Remove(0, 1))) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "kick_command_error_invalidUsername") }); return; } userToKick = CacheData.Usernames[message.Text.Split(" ")[1].Remove(0, 1)]; } else { bool isValid = int.TryParse(message.Text.Split(" ")[1], out userToKick); if (!isValid) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "kick_command_error_invalidUserId") }); return; } } } else { userToKick = message.ReplyToMessage.From.Id; } if (userToKick == 777000) // Telegram's official updateServiceNotification { Manager.BotClient.SendTextMessageAsync( chatId: message.Chat.Id, parseMode: ParseMode.Markdown, text: String.Format( "*[Error]*\n" + "This is an official Telegram's user/id.") ); return; } if (BotTools.IsUserOperator(userToKick)) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "command_to_operator_not_allowed") }); return; } try { Manager.BotClient.KickChatMemberAsync(message.Chat.Id, userToKick); if (message.Chat.Type == ChatType.Supergroup) { Manager.BotClient.UnbanChatMemberAsync(message.Chat.Id, userToKick); } } catch { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, ParseMode = ParseMode.Markdown, Text = CacheData.GetTranslation("en", "command_kick_error") }); return; } UserTools.AddPenalty(message.Chat.Id, userToKick, Models.TrustFactorLog.TrustFactorAction.kick, Manager.MyId); }
public void Execute(Message message) { if (!BotTools.IsUserOperator(message.From.Id, Models.Operator.Levels.Basic) && !ChatTools.IsUserAdmin(message.Chat.Id, message.From.Id)) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "ban_command_error_notadmin") }); return; } if (Manager.BotClient.GetChatAdministratorsAsync(message.Chat.Id).Result .Single(x => x.User.Id == message.From.Id) .CanRestrictMembers == false) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "ban_command_error_adminPrivilege") }); return; } int userToKick; if (message.ReplyToMessage == null) { if (message.Text.Split(" ")[1].StartsWith("@")) { if (!CacheData.Usernames.Keys.Contains(message.Text.Split(" ")[1].Remove(0, 1))) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "ban_command_error_invalidUsername") }); return; } userToKick = CacheData.Usernames[message.Text.Split(" ")[1].Remove(0, 1)]; } else { bool isValid = int.TryParse(message.Text.Split(" ")[1], out userToKick); if (!isValid) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "ban_command_error_invalidUserId") }); return; } } } else { userToKick = message.ReplyToMessage.From.Id; } if (userToKick == 777000) // Telegram's official updateServiceNotification { Manager.BotClient.SendTextMessageAsync( chatId: message.Chat.Id, parseMode: ParseMode.Markdown, text: String.Format( "*[Error]*\n" + "This is an official Telegram's user/id.") ); return; } if (BotTools.IsUserOperator(userToKick)) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "command_to_operator_not_allowed") }); return; } try { Manager.BotClient.KickChatMemberAsync(message.Chat.Id, userToKick, DateTime.UtcNow.AddMinutes(-5)); MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "ban_command_success") }); } catch { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "ban_command_error") }); return; } UserTools.AddPenalty(message.Chat.Id, userToKick, Models.TrustFactorLog.TrustFactorAction.ban, Manager.MyId); }
public void Execute(Message message) { Manager.BotClient.DeleteMessageAsync(message.Chat.Id, message.MessageId); if (!BotTools.IsUserOperator(message.From.Id) && !ChatTools.IsUserAdmin(message.Chat.Id, message.From.Id)) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, ReplyToMessageId = message.MessageId, Text = CacheData.GetTranslation("en", "error_not_auth_command") }); return; } int userId; if (message.ReplyToMessage == null) { if (message.Text.Split(" ")[1].StartsWith("@")) { if (!CacheData.Usernames.Keys.Contains(message.Text.Split(" ")[1].Remove(0, 1))) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "mute_command_error_invalidUsername") }); return; } userId = CacheData.Usernames[message.Text.Split(" ")[1].Remove(0, 1)]; } else { bool isValid = int.TryParse(message.Text.Split(" ")[1], out userId); if (!isValid) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "mute_command_error_invalidUserId") }); return; } } } else { userId = message.ReplyToMessage.From.Id; } if (BotTools.IsUserOperator(userId)) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "command_to_operator_not_allowed") }); return; } try { Manager.BotClient.RestrictChatMemberAsync( message.Chat.Id, userId, new ChatPermissions() { CanSendMessages = false, CanAddWebPagePreviews = false, CanChangeInfo = false, CanInviteUsers = false, CanPinMessages = false, CanSendMediaMessages = false, CanSendOtherMessages = false, CanSendPolls = false }); MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "mute_command_success") }); } catch { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, ParseMode = ParseMode.Markdown, Text = CacheData.GetTranslation("en", "command_mute_error") }); } }