ChewieBot_SteamRE.BotCommandHandler.CommandHandler C# (CSharp) Метод

CommandHandler() публичный Метод

Returns back status message that can be passed back to chat
public CommandHandler ( string message ) : string
message string line from chat
Результат string
        public string CommandHandler(string message)
        {
            /* TODO: Change this to handle command lookups cleaner.  Switch to XML file or Web Service.
             * Having to handle commands like this due to backwards compatibility with a txt file
             */
            string returnMessage = string.Empty;

            cmdList cmds = new cmdList();
            cmds.settingfile();

            if (message == "!commands")
            {
                for (int i = 0; i < 128; ++i)
                {
                    if (cmds.cmdsfromfile[i, 0] == null)
                        break;

                    returnMessage += cmds.cmdsfromfile[i, 2] + " ";

                }
            }
            else
            {
                for (int i = 0; i < 128; ++i)
                {
                    if (cmds.cmdsfromfile[i, 0] == null)
                        break;
                    if (cmds.cmdsfromfile[i, 2].Equals(message))
                    {
                        string webURL = cmds.cmdsfromfile[i, 4];
                        int count = 0;
                        byte[] chewieBuf = new byte[8192];
                        string htmlClear = @"<(.|\n)*?>";

                        WebRequest request;
                        WebResponse response;
                        Stream stream;

                        try
                        {
                            request = WebRequest.Create(webURL);

                            response = request.GetResponse();
                            stream = response.GetResponseStream();

                            do
                            {
                                count = stream.Read(chewieBuf, 0, chewieBuf.Length);

                                if (count != 0)
                                {
                                    returnMessage = Encoding.ASCII.GetString(chewieBuf, 0, count);
                                }
                            }
                            while (count > 0);
                            try
                            {
                                // clean up the string removing html parses

                                foreach (Match match in Regex.Matches(returnMessage, htmlClear))
                                    returnMessage = Regex.Replace(returnMessage, htmlClear, "");
                            }
                            catch (Exception)
                            {
                            }
                        }
                        catch (Exception)
                        {
                            // TODO: Timeouts?
                            //Console.WriteLine(ex.ToString());
                            //returnMessage = "Command Failed";
                            //Console.WriteLine("Command " + message + " has an invalid url.");
                        }
                    }
                }
            }

            return returnMessage;
        }

Usage Example

Пример #1
0
        static void Main(string[] args)
        {
            // TODO: Add check for instance already running

            //login info
            string userID = ConfigurationManager.AppSettings["userID"];
            string userPW = ConfigurationManager.AppSettings["userPW"];
            string botName = ConfigurationManager.AppSettings["botName"];

            List<SteamID> chatRooms = new List<SteamID>();

            ulong chatSteamID;
            if (ulong.TryParse(ConfigurationManager.AppSettings["chatSteamID"], out chatSteamID))
            {
                //List of Chats to join
                // TODO: multiple chatrooms
                chatRooms.Add(chatSteamID);
            }
            else
            {
                Console.WriteLine("Exit Code 10: Failed to Load SteamID");
                Environment.Exit(10);
            }

            //Initiliaze Steam Client
            SteamClient steamClient = new SteamClient();
            SteamUser steamUsr = steamClient.GetHandler<SteamUser>();
            SteamFriends steamFrds = steamClient.GetHandler<SteamFriends>();

            //Connect to Steam Network
            steamClient.Connect();

            while (true)
            {
                // start listening
                CallbackMsg msg = steamClient.WaitForCallback(true);

                msg.Handle<SteamClient.ConnectedCallback>(callback =>
                    {
                        if (callback.Result != EResult.OK)
                        {
                            Console.WriteLine("Exit Code 1: Failed to Connect to Steam Network - " + callback.Result.ToString());
                            Environment.Exit(1);
                            // connect fail
                        }
                        else
                        {
                            Console.WriteLine("Connected to Steam Network");

                            steamUsr.LogOn(new SteamUser.LogOnDetails
                            {
                                Username = userID,
                                Password = userPW,
                            });
                        }
                    });

                msg.Handle<SteamUser.LoggedOnCallback>(callback =>
                    {
                        if (callback.Result != EResult.OK)
                        {
                            Console.WriteLine("Exit Code 2: Logon Failure - " + callback.Result.ToString());
                            //Environment.Exit(2);
                            // logon fail
                        }
                        else
                        {
                            Console.WriteLine("Logged into Steam Network");

                            // Join Chat
                            // if you set PersonaState without setting PersonaName it goes to [unknown] and GetPersonaName doesn't work?
                            //steamFrds.SetPersonaName(steamFrds.GetPersonaName());
                            steamFrds.SetPersonaName(botName);
                            steamFrds.SetPersonaState(EPersonaState.Online);

                            foreach (SteamID steamID in chatRooms)
                            {
                                steamFrds.JoinChat(steamID);
                            }
                        }
                    });

                msg.Handle<SteamFriends.ChatEnterCallback>(callback =>
                    {
                        if (callback.EnterResponse != EChatRoomEnterResponse.Success)
                        {
                            Console.WriteLine("Exit Code 3: Failure to Enter Chat" + callback.EnterResponse.ToString());
                            //Environment.Exit(3);
                            // join chat fail
                        }
                        else
                        {
                            Console.WriteLine("Joined Chat");
                            foreach (SteamID steamID in chatRooms)
                            {
                                steamFrds.SendChatRoomMessage(steamID, EChatEntryType.ChatMsg, "Now listening");
                            }
                        }
                    });

                msg.Handle<SteamFriends.ChatMsgCallback>(callback =>
                    {
                        // TODO: Handle this in BotCommandHandler.cs

                        BotCommandHandler cmd = new BotCommandHandler();

                        foreach (SteamID steamID in chatRooms)
                        {
                            if (cmd.isCommand(callback.Message))
                            {

                                steamFrds.SendChatRoomMessage(steamID, EChatEntryType.ChatMsg, "Acknowledged. Processing...");

                                string retMsg = cmd.CommandHandler(callback.Message);
                                if (!string.IsNullOrEmpty(retMsg))
                                {
                                    steamFrds.SendChatRoomMessage(steamID, EChatEntryType.ChatMsg, cmd.CommandHandler(callback.Message));
                                }
                            }
                        }
                    });

            }
        }
All Usage Examples Of ChewieBot_SteamRE.BotCommandHandler::CommandHandler