<commit_before>﻿using Discord;
using Discord.Commands;
using Discord.Modules;
using NadekoBot.Classes.Conversations.Commands;
using NadekoBot.Extensions;
using NadekoBot.DataModels;
using NadekoBot.Modules.Permissions.Classes;
using NadekoBot.Properties;
using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace NadekoBot.Modules.Conversations
{
    internal class Conversations : DiscordModule
    {
        private const string firestr = "🔥 ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้ 🔥";
        private int tester = 0;
        public Conversations ()
        {
            commands.Add (new CopyCommand (this));
            commands.Add (new RequestsCommand (this));
        }

        public override string Prefix { get; } = String.Format (NadekoBot.Config.CommandPrefixes.Conversations,NadekoBot.Creds.BotId);

        public override void Install ( ModuleManager manager )
        {
            var rng = new Random ();

            manager.CreateCommands ("",cgb =>
            {
                cgb.AddCheck (PermissionChecker.Instance);

                cgb.CreateCommand ("..")
                    .Description ("Fügt ein neues Zitat mit Keyword (einzelnes Wort) und Nachricht (kein Limit).\n**Benutzung**: .. abc My message")
                    .Parameter ("keyword",ParameterType.Required)
                    .Parameter ("text",ParameterType.Unparsed)
                    .Do (async e =>
                    {
                        var text = e.GetArg ("text");
                        if (string.IsNullOrWhiteSpace (text))
                            return;
                        await Task.Run (() =>
                             Classes.DbHandler.Instance.InsertData (new DataModels.UserQuote ()
                             {
                                 DateAdded = DateTime.Now,
                                 Keyword = e.GetArg ("keyword").ToLowerInvariant (),
                                 Text = text,
                                 UserName = e.User.Name,
                             })).ConfigureAwait (false);

                        await e.Channel.SendMessage ("`Neues Zitat hinzugefügt.`").ConfigureAwait (false);
                    });


                cgb.CreateCommand ("...")
                    .Description ("Zeigt ein zufälliges Zitat eines Benutzers.\n**Benutzung**: .. abc")
                    .Parameter ("keyword",ParameterType.Required)
                    .Do (async e =>
                    {
                        var keyword = e.GetArg ("keyword")?.ToLowerInvariant ();
                        if (string.IsNullOrWhiteSpace (keyword))
                            return;

                        var quote =
                            Classes.DbHandler.Instance.GetRandom<UserQuote> (
                                uqm => uqm.Keyword == keyword);

                        if (quote != null)
                            await e.Channel.SendMessage ($"📣 {quote.Text}").ConfigureAwait (false);
                        else
                            await e.Channel.SendMessage ("💢`Kein Zitat gefunden.`").ConfigureAwait (false);
                    });

                cgb.CreateCommand ("..qdel")
                    .Alias ("..quotedelete")
                    .Description ("Löscht alle Zitate mit angegebenen Keyword. Du musst entweder der Bot-Besitzer oder der Ersteller des Quotes sein um es zu löschen.\n**Benutzung**: `..qdel abc`")
                    .Parameter ("quote",ParameterType.Required)
                    .Parameter ("number",ParameterType.Optional)
                    .Do (async e =>
                    {
                        var text = e.GetArg ("quote")?.Trim ();
                        if (string.IsNullOrWhiteSpace (text))
                            return;
                        await Task.Run (() =>
                        {
                            if (NadekoBot.IsOwner (e.User.Id))
                                Classes.DbHandler.Instance.DeleteWhere<UserQuote> (uq => uq.Keyword == text);
                            else
                                Classes.DbHandler.Instance.DeleteWhere<UserQuote> (uq => uq.Keyword == text && uq.UserName == e.User.Name || uq.Keyword == e.User.Name.ToLowerInvariant());
                        }).ConfigureAwait (false);

                        await e.Channel.SendMessage ("`Erledigt.`").ConfigureAwait (false);
                    });

                cgb.CreateCommand ("..qshow")
                    .Description ("Zeigt alle Zitate mit angegebenen Keyword.\n**Benutzung**: `..qshow abc`")
                    .Parameter ("quote",ParameterType.Required)
                    .Do (async e =><commit_msg>..qdelothers Hinzugefügt<commit_after>﻿using Discord;
using Discord.Commands;
using Discord.Modules;
using NadekoBot.Classes.Conversations.Commands;
using NadekoBot.Extensions;
using NadekoBot.DataModels;
using NadekoBot.Modules.Permissions.Classes;
using NadekoBot.Properties;
using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace NadekoBot.Modules.Conversations
{
    internal class Conversations : DiscordModule
    {
        private const string firestr = "🔥 ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้ 🔥";
        private int tester = 0;
        public Conversations ()
        {
            commands.Add (new CopyCommand (this));
            commands.Add (new RequestsCommand (this));
        }

        public override string Prefix { get; } = String.Format (NadekoBot.Config.CommandPrefixes.Conversations,NadekoBot.Creds.BotId);

        public override void Install ( ModuleManager manager )
        {
            var rng = new Random ();

            manager.CreateCommands ("",cgb =>
            {
                cgb.AddCheck (PermissionChecker.Instance);

                cgb.CreateCommand ("..")
                    .Description ("Fügt ein neues Zitat mit Keyword (einzelnes Wort) und Nachricht (kein Limit).\n**Benutzung**: .. abc My message")
                    .Parameter ("keyword",ParameterType.Required)
                    .Parameter ("text",ParameterType.Unparsed)
                    .Do (async e =>
                    {
                        var text = e.GetArg ("text");
                        if (string.IsNullOrWhiteSpace (text))
                            return;
                        await Task.Run (() =>
                             Classes.DbHandler.Instance.InsertData (new DataModels.UserQuote ()
                             {
                                 DateAdded = DateTime.Now,
                                 Keyword = e.GetArg ("keyword").ToLowerInvariant (),
                                 Text = text,
                                 UserName = e.User.Name,
                             })).ConfigureAwait (false);

                        await e.Channel.SendMessage ("`Neues Zitat hinzugefügt.`").ConfigureAwait (false);
                    });


                cgb.CreateCommand ("...")
                    .Description ("Zeigt ein zufälliges Zitat eines Benutzers.\n**Benutzung**: .. abc")
                    .Parameter ("keyword",ParameterType.Required)
                    .Do (async e =>
                    {
                        var keyword = e.GetArg ("keyword")?.ToLowerInvariant ();
                        if (string.IsNullOrWhiteSpace (keyword))
                            return;

                        var quote =
                            Classes.DbHandler.Instance.GetRandom<UserQuote> (
                                uqm => uqm.Keyword == keyword);

                        if (quote != null)
                            await e.Channel.SendMessage ($"📣 {quote.Text}").ConfigureAwait (false);
                        else
                            await e.Channel.SendMessage ("💢`Kein Zitat gefunden.`").ConfigureAwait (false);
                    });

                cgb.CreateCommand ("..qdel")
                    .Alias ("..quotedelete")
                    .Description ("Löscht alle Zitate mit angegebenen Keyword. Du musst entweder der Bot-Besitzer oder der Ersteller des Quotes sein um es zu löschen.\n**Benutzung**: `..qdel abc`")
                    .Parameter ("quote",ParameterType.Required)
                    .Do (async e =>
                    {
                        var text = e.GetArg ("quote")?.Trim ();
                        if (string.IsNullOrWhiteSpace (text))
                            return;
                        await Task.Run (() =>
                        {
                            if (NadekoBot.IsOwner (e.User.Id))
                                Classes.DbHandler.Instance.DeleteWhere<UserQuote> (uq => uq.Keyword == text);
                            else
                                Classes.DbHandler.Instance.DeleteWhere<UserQuote> (uq => uq.Keyword == text && uq.UserName == e.User.Name || uq.Keyword == e.User.Name.ToLowerInvariant());
                        }).ConfigureAwait (false);

                        await e.Channel.SendMessage ("`Erledigt.`").ConfigureAwait (false);
                    });

                cgb.CreateCommand ("..qdelothers")
                    .Alias ("..quotedeleteothers")
                    .Description ("Löscht alle Zitate mit eigenem Namen als Keyword, welche von anderen geaddet wurden. \n**Benutzung**: `..qdelothers`")
                    .Do (async e =>
                    {
                        var text = e.User.Name.ToLowerInvariant ();
                        await Task.Run (() =>
                        {
                            Classes.DbHandler.Instance.DeleteWhere<UserQuote> (uq => uq.Keyword == text && uq.UserName != e.User.Name);
                        }).ConfigureAwait (false);

                        await e.Channel.SendMessage ("`Erledigt.`").ConfigureAwait (false);
                    });

                cgb.CreateCommand ("..qshow")
                    .Description ("Zeigt alle Zitate mit angegebenen Keyword.\n**Benutzung**: `..qshow abc`")
                    .Parameter ("quote",ParameterType.Required)
                    .Do (async e =>
{'fraction_non_alphanumeric': 0.13010228467641716, 'fraction_numerical': 0.0001911863110601281, 'mean_word_length': 1.4094887148779365, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 33, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 10, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4732555', 'n_tokens_mistral': 2885, 'n_tokens_neox': 2924, 'n_words': 555}