Ejemplo n.º 1
0
        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
            });
        }
Ejemplo n.º 2
0
        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
            });
        }