private void SaveNote(Message message) { if (message.Text.StartsWith("/setnote") || message.Text.StartsWith("/addnote")) { message.Text = message.Text.Remove(0, 9); } Regex reg = new Regex("#[A-z0-9]+", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); MatchCollection matchedTags = reg.Matches(message.Text); if (matchedTags.Count == 0) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "addnote_command_error_starttag") }); return; } string tagCollection = ""; foreach (Match match in matchedTags) { tagCollection += match.Value; } message.Text += Environment.NewLine; message.Text += Environment.NewLine; message.Text += "The text of this note is set by the group administrator."; Models.Group.Note newNote = noteLogic.Add(CacheData.Groups.Values.Single(x => x.TelegramChatId == message.Chat.Id).GroupId, tagCollection, message.Text, -2); if (newNote == null) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "addnote_command_error_generic") }); return; } MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "addnote_command_success"), AutoDestroyTimeInSeconds = 5, PostSentAction = Models.ChatMessage.PostSentActions.Destroy }); MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = newNote.Message }); }
public void Execute(Message message) { if (!Utils.BotTools.IsUserOperator(message.From.Id, Models.Operator.Levels.Basic) && !Utils.ChatTools.IsUserAdmin(message.Chat.Id, message.From.Id)) { return; } Message messageToCheck = message; if (message.ReplyToMessage != null) { messageToCheck = message.ReplyToMessage; } if (messageToCheck.From.Id != Manager.MyId && !messageToCheck.Text.Contains("NoteId:")) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, ReplyToMessageId = message.MessageId, Text = CacheData.GetTranslation("en", "error_removenote_command_invalidmessage") }); return; } Manager.BotClient.DeleteMessageAsync(message.Chat.Id, message.MessageId); string noteId = messageToCheck.Text.Split("NoteId:")[1].Trim(); Models.Group.Note note = noteLogic.GetById(noteId); if (note == null) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "error_removenote_command_invalidNoteId") }); return; } if (note.GroupId != CacheData.Groups[messageToCheck.Chat.Id].GroupId) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "error_removenote_command_invalidOwner") }); return; } Models.SystemLog.ErrorCodes removed = noteLogic.Remove(noteId, -2); if (removed == Models.SystemLog.ErrorCodes.Error) { MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "error_removenote_command_generic") }); } if (message.MessageId != messageToCheck.MessageId) { Manager.BotClient.DeleteMessageAsync(message.Chat.Id, messageToCheck.MessageId); } MessageQueueManager.EnqueueMessage( new Models.ChatMessage() { Timestamp = DateTime.UtcNow, Chat = message.Chat, Text = CacheData.GetTranslation("en", "removenote_command_success"), AutoDestroyTimeInSeconds = 5, PostSentAction = Models.ChatMessage.PostSentActions.Destroy }); }