示例#1
0
        public static async Task <string> BotThinkAsync(string input, string botName)
        {
            //Remove bot name from message input
            if (input.StartsWith(botName, StringComparison.OrdinalIgnoreCase))
            {
                input = input.Substring(input.IndexOf(',', StringComparison.OrdinalIgnoreCase) + 1).Trim();
            }
            else if (input.TrimEnd().EndsWith(botName, StringComparison.OrdinalIgnoreCase))
            {
                input = input.Substring(0, input.LastIndexOf(botName, StringComparison.OrdinalIgnoreCase)).Trim();
            }

            try
            {
                if (cleverbotSession == null)
                {
                    cleverbotSession = new CleverbotSession(Settings.Default.CleverbotAPI);
                }

                CleverbotResponse answer = await cleverbotSession.GetResponseAsync(input).ConfigureAwait(false);

                return(answer.Response);
            }
            catch
            {
                cleverbotSession = new CleverbotSession(Settings.Default.CleverbotAPI);
                return("Sorry, but i can't think right now");
            }
        }
示例#2
0
        public async Task CleverbotLoop()
        {
            CleverbotSession cleverbot = new CleverbotSession("your-api-key");

            Console.WriteLine("Hello in the Cleverbot.Net test app, please type your message.\n");

            string msg = Console.ReadLine();

            Console.Write("...");
            CleverbotResponse r = await cleverbot.GetResponseAsync(msg);

            Console.CursorLeft = 0;
            Console.WriteLine(r.Response);

            while (true)
            {
                Console.ForegroundColor = ConsoleColor.Gray;
                msg = Console.ReadLine();
                Console.Write("...");
                r = await r.RespondAsync(msg);

                Console.CursorLeft = 0;
                Console.WriteLine(r.Response);
            }
        }
示例#3
0
        public void messageReceived()
        {
            var session = CleverbotSession.NewSession("oWBfq3FGSQA8Xo50", "PyQAXcJswt7DsPply9lSq2e1pN0bd1wK");

            myBot.discord.MessageReceived += async(s, e) =>
            {
                if (!e.Message.IsAuthor && e.Message.IsMentioningMe())
                {
                    string msg = e.Message.Text.Replace("@" + myBot.discord.CurrentUser.Name + " ", "").Replace("!", "");
                    foreach (BotCommand cmd in myBot.commands)
                    {
                        if (msg == cmd.getCommand())
                        {
                            return;
                        }
                    }
                    try {
                        await e.Channel.SendIsTyping();

                        await e.Channel.SendMessage(session.Send(msg));
                    }catch (ArgumentException exc)
                    {
                        await e.Channel.SendMessage("Something went wrong with the bot :(");
                    }
                }
            };
        }
示例#4
0
        public ChatSession(string apiKey, IGuildUser user, IChannel channel)
        {
            Guild   = user.Guild.Id;
            Channel = channel.Id;
            User    = user.Id;

            Session = new CleverbotSession(apiKey);
        }
示例#5
0
    private void sendBotMessage(BotUser user, string message)
    {
        CleverbotSession botSession = user.BotSession;

        if (botSession != null)
        {
            Clients.Caller.onMessageReceived(message, true);
            string response          = botSession.GetResponse(message).Response;
            string processedResponse = ProcessBotResponse(response);
            Clients.Caller.onMessageReceived(processedResponse, false);
        }
    }
示例#6
0
    static void Main()
    {
        string message;
        var    session = CleverbotSession.NewSession("apiUser", "apiKey");

        do
        {
            Console.Write("Type your message: ");
            message = Console.ReadLine();
            Console.Write("Bot: ");
            Console.WriteLine(session.Send(message));
        } while (message.ToLower().Trim() != "exit");
    }
示例#7
0
        public string CallCleverbot()
        {
            string question, answer = "";

            //API User and Pass Keys
            var session = CleverbotSession.NewSession("0VrnWzbEZNTu267C", "SQ6OtXq07kede794AByhwee7pMA6aewT");

            Console.Write("Ask Cleverbot Something:");
            question = Console.ReadLine();
            answer   = session.Send(question);
            Console.WriteLine(answer);

            return(answer);
        }
        private CleverbotSession GetSession(IUser user)
        {
            while (true)
            {
                if (_sessions.TryGetValue(user, out var session))
                {
                    return(session);
                }

                var newSession = new CleverbotSession(_apiKey, false);

                if (_sessions.TryAdd(user, newSession))
                {
                    return(newSession);
                }
            }
        }
示例#9
0
        public SpeechHandler()
        {
            session    = Cleverbot.createSession();
            recognizer = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));
            synth      = new SpeechSynthesizer();

            recognizer.SetInputToDefaultAudioDevice();
            synth.SetOutputToDefaultAudioDevice();

            DictationGrammar defaultDictationGrammar = new DictationGrammar();

            defaultDictationGrammar.Name    = "default dictation";
            defaultDictationGrammar.Enabled = true;
            recognizer.LoadGrammar(defaultDictationGrammar);

            recognizer.SpeechRecognized += new EventHandler <SpeechRecognizedEventArgs>(sre_SpeechRecognized);
        }
示例#10
0
 public static void Init()
 {
     if (Bot.Config.CleverbotEnabled)
     {
         IsServiceAvailable = CreateCleverBotSession(Bot.Config.CleverbotNick);
         if (!IsServiceAvailable)
         {
             try
             {
                 cleverBotSession = CleverbotSession.NewSession(Bot.Config.CleverbotAPIUser, Bot.Config.CleverbotAPIKey);
             }
             catch (Exception e)
             {
                 Console.WriteLine("Error while setting up Cleverbot-API...\r\nExceptionMsg: " + e.Message);
             }
         }
     }
 }
示例#11
0
        public Session(Settings settings)
        {
            _settings = settings;

            Console.WriteLine("Setting up endpoint urls...");
            ApiEndpoint.ServerStatsUrl = _settings.ServerEndpointStats;

            Console.WriteLine("Setting up translation...");
            _translate = new Translate(_log, settings.AzureToken, settings.TranslateTo);

            Console.WriteLine("Setting up github webhook...");
            GithubWebhookDelivery callback = GithubDelivery;

            _wcfServer = new WCFServer(callback);
            _wcfServer.Start();

            Console.WriteLine("Getting stats history...");
            if (File.Exists(Const.SERVICE_HOOKAPP_HISTORY))
            {
                _serviceHookappStats = JsonConvert.DeserializeObject <List <ServerStats> >(File.ReadAllText(Const.SERVICE_HOOKAPP_HISTORY));
            }
            else
            {
                _serviceHookappStats = new List <ServerStats>();
            }

            Console.WriteLine("Setting up github access...");
            var credentials = new InMemoryCredentialStore(new Credentials(_settings.GithubToken));

            _githubClient             = new GitHubClient(new ProductHeaderValue("HookApp"));
            _githubClient.Credentials = new Credentials(_settings.GithubToken);

            Console.WriteLine("Setting up cleverbot...");
            _cleverbot = new CleverbotSession(_settings.CleverbotToken);

            Console.WriteLine("Setting up discord...");
            _client                  = new DiscordSocketClient();
            _client.Log             += _client_Log;
            _client.Ready           += _client_Ready;
            _client.MessageReceived += _client_MessageReceived;
            InstallDiscordCommands();
        }
示例#12
0
        protected override void OnConfigChanged(string arg, string value)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                return;
            }

            switch (arg)
            {
            case "add":
                var session = CleverbotSession.NewSession(ApiUser, ApiKey);
                Sessions.Add(value, session);
                this[arg]   = null;
                this[value] = session.BotNick;
                break;

            case "remove":
                Sessions.Remove(value);
                this[arg] = null;
                break;
            }
        }
示例#13
0
    public void Start()
    {
        _client = new DiscordClient();

        _client.Log.Message += (s, e) => Console.WriteLine($"[{e.Severity} - {DateTime.UtcNow.Hour}:{DateTime.UtcNow.Minute}:{DateTime.UtcNow.Second}] {e.Source}: {e.Message}");

        CleverbotSession session = null;

        _client.UsingCommands(x =>
        {
            x.PrefixChar         = '+';
            x.AllowMentionPrefix = true;
            x.HelpMode           = HelpMode.Public;
        });

        char p = '+';
        // var sepchar = Path.DirectorySeparatorChar;
        string topic = "Ready to play a Mini TWOW!";

        _client.GetService <CommandService>().CreateCommand("botok") //create command
        .Alias("ping", "status")                                     // add some aliases
        .Description("Checks if the bot is online.")                 //add description, it will be shown when +help is used
        .Do(async e =>
        {
            if (IsMTWOWChannel(e.Server.Id, e.Channel.Id))
            {
                await e.Channel.SendMessage($"bot is online \ud83d\udc4c");
            }
        });

        _client.GetService <CommandService>().CreateCommand("kill") //killswitch
        .Alias("shutdown")
        .Description("Shuts down the bot if correct parameter is given")
        .Parameter("keyword", ParameterType.Multiple)
        .Do(e => {
            string keyhash = "0a7a27bedd1f822ac176d55217c0cdc9e8573f173d2b1a525e3607a7614a29b7";
            try
            {
                if (e.Channel.IsPrivate && sha256_hash(e.GetArg("keyword")) == keyhash)
                {
                    System.Environment.Exit(1);
                }
            }
            catch { }
        });

        _client.GetService <CommandService>().CreateCommand("prepare")
        .Alias("setup")
        .Description("Prepares the current channel for a Mini TWOW.")
        .Do(async e =>
        {
            User bot = e.Server.GetUser(_client.CurrentUser.Id);
            if (bot.GetPermissions(e.Channel).ManageChannel)
            {
                if (e.User.GetPermissions(e.Channel).ManageChannel)
                {
                    Clear("data", e.Server.Id);
                    SaveLine("data", e.Channel.Id.ToString(), e.Server.Id, 1);
                    SaveLine("data", "0", e.Server.Id, 2);
                    SaveLine("data", "null", e.Server.Id, 3);
                    Clear("users", e.Server.Id);
                    //see wiki for dev notes/file layout
                    await e.Channel.Edit(e.Channel.Name, $"{topic}\n{e.Channel.Topic.Replace($"{topic}", "")}", e.Channel.Position);
                    await e.Channel.SendMessage($"This channel is now ready to play Mini TWOWs!");
                }
                else
                {
                    await e.Channel.SendMessage($"You must have the `MANAGE_CHANNELS` permission to use this command!");
                }
            }
            else
            {
                await e.Channel.SendMessage($"Please give the bot permissions to manage the channel!");
            }
        });

        _client.GetService <CommandService>().CreateCommand("create")
        .Alias("make")
        .Description("Creates a Mini TWOW game.")
        .Do(async e =>
        {
            ulong mtChannel  = 000000000000000000;
            string data      = LoadLine("data", e.Server.Id, 1);
            bool parseResult = ulong.TryParse(data, out mtChannel);
            if (parseResult)
            {
                if (e.Channel.Id == mtChannel && e.Server.GetUser(_client.CurrentUser.Id).GetPermissions(e.Channel).SendMessages)
                {
                    int gamestatus      = 100;
                    data                = LoadLine("data", e.Server.Id, 2);
                    bool newParseResult = int.TryParse(data, out gamestatus);
                    if (newParseResult)
                    {
                        if (gamestatus == 0)
                        {
                            SaveLine("data", "1", e.Server.Id, 2);
                            SaveLine("data", e.User.Id.ToString(), e.Server.Id, 3);
                            Clear("users", e.Server.Id);
                            await e.Channel.SendMessage($"You have successfully created a Mini TWOW game! Run `{p}join` to join the game, and run `{p}start` when you're ready to start the game.");
                        }
                        else
                        {
                            await e.Channel.SendMessage($"A game is already running. Please wait for it to finish!");
                        }
                    }
                    else
                    {
                        await e.Channel.SendMessage($"The data file has been corrupted. Please ask a user with `MANAGE_CHANNELS` perms to do `{p}prepare`.");
                    }
                }
                else
                {
                    // await e.Channel.SendMessage($"Please go to <#{mtChannel}> to start a Mini TWOW!");
                }
            }
            else
            {
                await e.Channel.SendMessage($"Please get a user with `MANAGE_CHANNELS` permissions to run the `{p}prepare` command before starting a Mini TWOW.");
            }
        });

        _client.GetService <CommandService>().CreateCommand("join")
        .Description("Joins an active Mini TWOW game.")
        .Do(async e =>
        {
            try
            {
                if (IsMTWOWChannel(e.Server.Id, e.Channel.Id))
                {
                    int gamestatus   = 100;
                    string data      = LoadLine("data", e.Server.Id, 2);
                    bool parseResult = int.TryParse(data, out gamestatus);
                    if (parseResult)
                    {
                        if (gamestatus == 1)
                        {
                            string[] users = LoadFile("users", e.Server.Id);
                            if (users == null)
                            {
                                string newUsers = $"{e.User.Id.ToString()}\n";
                                SaveFile("users", newUsers, e.Server.Id);
                                await e.Channel.SendMessage($"You have successfully joined the game.");
                            }
                            bool inGame = false;
                            foreach (string user in users)
                            {
                                ulong userID = 000000000000000000;
                                bool parse   = ulong.TryParse(user, out userID);
                                if (parse)
                                {
                                    inGame |= userID == e.User.Id;
                                }
                            }
                            if (inGame)
                            {
                                await e.Channel.SendMessage($"You are already in the game!");
                            }
                            else
                            {
                                string newUsers = users.ToString();
                                newUsers       += $"{e.User.Id.ToString()}\n";
                                SaveFile("users", newUsers, e.Server.Id);
                                await e.Channel.SendMessage($"You have successfully joined the game.");
                            }
                        }
                        else if (gamestatus == 0)
                        {
                            await e.Channel.SendMessage($"No game is currently running. Type `{p}create` to create a game!");
                        }
                        else
                        {
                            await e.Channel.SendMessage($"It is too late to join the game!");
                        }
                    }
                    else
                    {
                        await e.Channel.SendMessage($"The data file has been corrupted. Please ask a user with `MANAGE_CHANNELS` permissions to do `{p}prepare`.");
                    }
                }
            }
            catch (Exception error) { Console.WriteLine($"[ERROR] somethin borked during {p}join: {error.ToString()}"); }
        });

        _client.GetService <CommandService>().CreateCommand("chat")
        .Description("Talk with the bot")
        .Parameter("sentence", ParameterType.Unparsed)
        .Do(async e =>
        {
            try
            {
                if (session == null)
                {
                    string ChatUser = File.ReadAllLines("logins.txt")[1];
                    string ChatKey  = File.ReadAllLines("logins.txt")[2];
                    session         = await CleverbotSession.NewSessionAsync(ChatUser, ChatKey);
                }
                string response = await session.SendAsync(e.GetArg("sentence"));
                await e.Channel.SendMessage(response);
            }
            catch (Exception error) { Console.WriteLine($"[ERROR] An issue occured while trying to +chat: {error.ToString()}"); }
        });

        _client.GetService <CommandService>().CreateGroup("test", cgb =>
        {
            cgb.CreateCommand("save")
            .Description("Multi-server data test")
            .Parameter("data", ParameterType.Unparsed)
            .Do(async e =>
            {
                //Save("data", e.GetArg("data"), e.Server.Id, 1);
                //await e.Channel.SendMessage($"data saved");
                await e.Channel.SendMessage($"no");
            });

            cgb.CreateCommand("load")
            .Description("Multi-server data test")
            .Parameter("line", ParameterType.Required)
            .Do(async e =>
            {
                try
                {
                    /* int i = 0; // line number
                     * bool success = int.TryParse(e.GetArg("line"), out i); // output line number to line number
                     * if (success) // check if line number was parsed successfully
                     * {
                     * string data = Load("data", e.Server.Id, i); // run Load with required data
                     * if (data != null) // check if operation was successful
                     * await e.Channel.SendMessage(data); // output line
                     * else if it failed...
                     *         await e.Channel.SendMessage("file/line didnt exist"); // ...then say it failed
                     * }
                     * else
                     * {
                     * await e.Channel.SendMessage($"failed to parse input ({e.GetArg("line")})"); // input wasn't an int
                     * }*/

                    await e.Channel.SendMessage($"no");
                }
                catch (Exception error)
                {
                    await e.Channel.SendMessage($"error: {error.ToString()}");
                }
            });
        });

        _client.Ready += (s, e) =>
        {
            Console.WriteLine($"[{DateTime.UtcNow.Hour}:{DateTime.UtcNow.Minute}:{DateTime.UtcNow.Second}] Connected as {_client.CurrentUser.Name}#{_client.CurrentUser.Discriminator}");
        };

        _client.ExecuteAndWait(async() =>
        {
            string token = File.ReadAllLines("logins.txt")[0];
            await _client.Connect(token, TokenType.Bot);
        });
    }
示例#14
0
        public async Task RunBotAsync()
        {
            string botToken = "";

            // Get bot token
            if (File.Exists("botToken.txt"))
            {
                botToken = File.ReadAllText("botToken.txt");
            }
            if (string.IsNullOrEmpty(botToken))
            {
                Console.WriteLine("Bot Token does not exist, make sure its correct in the botToken.txt file");
                return;
            }

            if (File.Exists("emailPassword.txt"))
            {
                emailPassword = File.ReadAllText("emailPassword.txt");
            }

            if (File.Exists("cleverbotToken.txt"))
            {
                cleverBotApiKey = File.ReadAllText("cleverbotToken.txt");
            }

            random    = new Random();
            _client   = new DiscordSocketClient();
            _commands = new CommandService();

            _services = new ServiceCollection()
                        .AddSingleton(_client)
                        .AddSingleton(_commands)
                        .AddPaginator(_client)
                        .BuildServiceProvider();

            cleverbot = new CleverbotSession(cleverBotApiKey);

            _client.Log += Log;

            _client.Ready       += OnReady;
            _client.LeftGuild   += OnLeftGuild;
            _client.JoinedGuild += OnJoinedGuild;
            _client.UserJoined  += OnUserJoined;

            _client.MessageReceived += async(arg) =>
            {
                if (globalUsers == null)
                {
                    return;
                }

                if (arg is null || arg.Author.IsBot)
                {
                    return;
                }

                if (arg.Content.Contains("https://discord.gg/"))
                {
                    await arg.DeleteAsync();
                }

                GlobalUser user = globalUsers.FirstOrDefault(x => x.UserID == arg.Author.Id);
                if (user == default(GlobalUser))
                {
                    globalUsers.Add(new GlobalUser(arg.Author));
                }

                if (arg.Content.ToLower().Contains("i love you"))
                {
                    await Responses.ILoveYou(user, arg);

                    return;
                }
            };
            _client.MessageUpdated += OnMessageUpdated;
            _client.LatencyUpdated += OnUpdate;

            _client.UserVoiceStateUpdated += Modules.VoiceChannelManager.OnUserJoinedVC;
            _client.ChannelDestroyed      += Modules.VoiceChannelManager.CheckVoiceChannelOnDelete;

            await RegisterCommandsAsync();

            await _client.LoginAsync(TokenType.Bot, botToken);

            await _client.StartAsync();

            await Task.Delay(-1);
        }
示例#15
0
        public static string getChatResponse(CleverbotSession session, string message)
        {
            string response = session.Send(message);

            return(response);
        }
示例#16
0
        public static CleverbotSession createSession()
        {
            var session = CleverbotSession.NewSession(apiUser, apiKey);

            return(session);
        }