Beispiel #1
0
        public bool checkForWord(string content)
        {
            content = content.ToLower();
            string triggerword = guesser.ActiveWord()?.word?.ToLower();

            if (string.IsNullOrEmpty(triggerword))
            {
                return(false);
            }

            if (triggerword == content)
            {
                return(true);
            }
            if (content.StartsWith(triggerword + " "))
            {
                return(true);
            }
            if (content.EndsWith(" " + triggerword))
            {
                return(true);
            }
            if (content.Contains(" " + triggerword + " "))
            {
                return(true);
            }
            return(false);
        }
Beispiel #2
0
        public void Process(SocketMessage message)
        {
            Message = message;
            Command cmd    = new Command(message);
            User    sender = db.Find <User>(message.Author.Id.ToString());

            if (sender == null)
            {
                sender = new User()
                {
                    id       = message.Author.Id.ToString(),
                    username = message.Author.Username
                };
                db.Add(sender);
            }


            GuessedWord active = guesser.ActiveWord();

            if (!cmd.isValid)
            {
                Discord.Reply(Message.Channel, "Неизвестная комманда, напиши ;;help");
                return;
            }

            switch (cmd.command)
            {
            case "кто":
                if (active != null)
                {
                    Discord.Reply(Message.Channel, $"Слово загадал {active.user.username} в {active.activated}");
                }
                else
                {
                    Discord.Reply(Message.Channel, $"Слово никто не загадал! Будь первым! Напиши ``;;загадать абрикос``");
                }

                break;

            case "загадать":
                if (active != null)
                {
                    TimeSpan timepassed = DateTime.Now - active.activated;
                    if (timepassed.TotalHours < 24)
                    {
                        Discord.Reply(Message.Channel, $"Слово загадал ``{active.user.username}`` в ``{active.activated}``. \n Реши прежде его слово, чтобы получить возможность загадать своё");
                        return;
                    }
                    nlog.LogInformation("Question expired");
                    guesser.DeActivateWord();
                }

                string combinedword = string.Join(" ", cmd.arguments);
                if (combinedword.Length < 3)
                {
                    Discord.Reply(Message.Channel, $"Давай что-то по длинее придумай :wink:");
                    return;
                }
                if (combinedword.Length > 12)
                {
                    Discord.Reply(Message.Channel, $"Они же никогда в жизни не угадают, за что ты так с ними? :weary:  \n Давай другое");
                    return;
                }
                if (WordValidator(combinedword))
                {
                    Discord.Reply(Message.Channel, $"Попробуй загадать слово используя лишь буквы");
                    return;
                }

                GuessedWord word = new GuessedWord()
                {
                    user = sender,
                    word = combinedword.ToLower()
                };

                guesser.ActivateWord(word);

                Discord.Reply(Message.Channel, $"Хорошо, пусть попробуют теперь угадать {word.word}");


                break;

            case "очки":
                Discord.Reply(Message.Channel, $"Твои баллы: {sender.points}");
                break;

            case "забудь":
                if (active == null)
                {
                    Discord.Reply(Message.Channel, $"Так ничего же загадано!");
                    return;
                }
                if (sender.id != active.user.id)
                {
                    Discord.Reply(Message.Channel, $"Хех, хитрый. Не ты загадывал это слово. Попроси {active.user.username} чтобы он отменил, или дождись 24 часа");
                    return;
                }
                guesser.DeActivateWord();
                Discord.Reply(Message.Channel, $"ОК. Готов к новому слову");
                break;

            case "help":
                break;

            default:
                Discord.Reply(Message.Channel, "Неизвестная комманда, напиши ;;help");
                break;
            }
        }