コード例 #1
0
        private static void Main(string[] args)
        {
            Console.Title = string.Format("Grand Hero Farmer v{0}", Helpers.GetProgramVersion());
            Console.Clear();

            Console.WriteLine();
            ConsoleLogger.WriteCenter("Grand Hero Farmer", textColor: ConsoleColor.Cyan, backgroundColor: ConsoleColor.DarkCyan);
            ConsoleLogger.WriteCenter(puns[rnd.Next(puns.Count)], newLine: true, textColor: ConsoleColor.Magenta);
            ConsoleLogger.WriteTime("Starting program...");

            try
            {
                AdbWrapper adb = new AdbWrapper();

                // Initializing Bot Configurations
                ConsoleLogger.WriteTime("Loading bot configurations from xml... ", false);
                BotConfiguration botConfig = new BotConfiguration("configs");
                ConsoleLogger.Write("OK", textColor: ConsoleColor.Cyan);

                ConsoleLogger.WriteTime("Initializing bot instance... ", false);
                FehBot bot = new FehBot(botConfig);
                ConsoleLogger.Write("OK", textColor: ConsoleColor.Cyan);

                ConsoleLogger.WriteTime("Setup is done, press enter to start earning feathers.", textColor: ConsoleColor.Cyan);
                ConsoleLogger.WriteTime("Press 'Ctrl + C' to exit the application.", newLine: false, textColor: ConsoleColor.Cyan);
                Console.ReadLine();

                Thread thread = new Thread(() =>
                {
                    Console.Title = string.Format("{0} - Farming", Console.Title);

                    while (true)
                    {
                        bot.Run(adb);
                    }
                });

                thread.Start();
            }
            catch (FileNotFoundException)
            {
                ConsoleLogger.Write("FAILED", textColor: ConsoleColor.Red);
                ConsoleLogger.WriteTime("Couldn't Load XML File. Press Enter to exit the application.");
            }
            catch (NullReferenceException)
            {
                ConsoleLogger.Write("FAILED", textColor: ConsoleColor.Red);
                ConsoleLogger.WriteTime("Looks like your XML file is malformed. Press Enter to exit the application.");
            }
            catch (Exception ex)
            {
                ConsoleLogger.Write(ex.ToString(), textColor: ConsoleColor.Red);
            }
            finally
            {
                Console.ReadLine();
            }
        }
コード例 #2
0
        public void handle(RegistrationInfoFactory infoFactory, IrcDotNet.IrcClient client, FehBot bot, MongoDB.Driver.IMongoDatabase db, IrcDotNet.IrcUser from, IrcDotNet.IrcChannel to, string message)
        {
            if (isFactoidMentionRequest(message))
            {
                Tuple <string, string> request = ParseFactionMention(message);
                var term   = request.Item1.Trim();
                var target = request.Item2.Trim();

                var factoid = db.GetCollection <BsonDocument>("factoid");
                var builder = Builders <BsonDocument> .Filter;
                var filter  = builder.Eq("term", term) & builder.Eq("channel", to.Name.ToLower()) & builder.Eq("network", infoFactory.Server);

                var document = factoid.Find(filter).FirstOrDefault();

                if (document == null)
                {
                    string template = "{0}, Huh?";
                    client.LocalUser.SendMessage(to, String.Format(template, from.NickName));
                }
                else
                {
                    string template = "{0}, {1}.";
                    client.LocalUser.SendMessage(to, String.Format(template, target, document.GetValue("meaning").AsString));
                }
            }
            else if (isFactoidGetRequest(message))
            {
                var term    = parseFactoidGet(message);
                var factoid = db.GetCollection <BsonDocument>("factoid");
                var builder = Builders <BsonDocument> .Filter;
                var filter  = builder.Eq("term", term) & builder.Eq("channel", to.Name.ToLower()) & builder.Eq("network", infoFactory.Server);

                var document = factoid.Find(filter).FirstOrDefault();

                if (document == null)
                {
                    string template = "{0}, Huh?";
                    client.LocalUser.SendMessage(to, String.Format(template, from.NickName));
                }
                else
                {
                    string template = "{0}, {1}";
                    client.LocalUser.SendMessage(to, String.Format(template, from.NickName, document.GetValue("meaning").AsString));
                }
            }
            else if (isFactoidStoreRequest(message, infoFactory.NickName))
            {
                message = HandlerUtils.removeMention(message, infoFactory.NickName);
                var request    = parseFactoidStoreRequest(message);
                var term       = request.Item1;
                var definition = request.Item2;

                var factoid = db.GetCollection <BsonDocument>("factoid");
                var builder = Builders <BsonDocument> .Filter;
                var filter  = builder.Eq("term", term) & builder.Eq("channel", to.Name.ToLower()) & builder.Eq("network", infoFactory.Server);

                var document = factoid.Find(filter).FirstOrDefault();
                if (document == null)
                {
                    factoid.InsertOne(new BsonDocument {
                        { "term", term },
                        { "channel", to.Name.ToLower() },
                        { "network", infoFactory.Server },
                        { "meaning", definition }
                    });
                }
                else
                {
                    var update = Builders <BsonDocument> .Update.Set("meaning", definition);

                    factoid.UpdateOne(filter, update);
                }
                string template = "{0}, Got it!";
                client.LocalUser.SendMessage(to, String.Format(template, from.NickName));
            }
            else if (isFactoidRemoveRequest(message, infoFactory.NickName))
            {
                message = HandlerUtils.removeMention(message, infoFactory.NickName);
                string term = parseFactoidRemoveRequest(message);

                var factoid = db.GetCollection <BsonDocument>("factoid");
                var builder = Builders <BsonDocument> .Filter;
                var filter  = builder.Eq("term", term) & builder.Eq("channel", to.Name.ToLower()) & builder.Eq("network", infoFactory.Server);

                var document = factoid.Find(filter).FirstOrDefault();
                if (document == null)
                {
                    string template = "{0}, Huh?";
                    client.LocalUser.SendMessage(to, String.Format(template, from.NickName));
                }
                else
                {
                    factoid.DeleteOne(filter);
                    string template = "{0}, It never happened.";
                    client.LocalUser.SendMessage(to, String.Format(template, from.NickName));
                }
            }
        }
コード例 #3
0
ファイル: AccountLinkHandler.cs プロジェクト: ziccardi/fehbot
        public void handle(RegistrationInfoFactory infoFactory, IrcDotNet.IrcClient client, FehBot bot, MongoDB.Driver.IMongoDatabase db, IrcDotNet.IrcUser from, IrcDotNet.IrcChannel to, string message)
        {
            if (to == null && isCode(message))
            {
                string code     = parseCodeRequest(message);
                string nick     = from.NickName;
                var    document = getForCode(nick.Trim(), code.Trim(), db);
                if (document != null)
                {
                    addListener(document, db);
                    var link = new JObject();

                    link.Add("nick", document.Nick);
                    link.Add("remoteUserName", document.RemoteUserName);

                    callWebHook(db, link);
                }
            }
        }
コード例 #4
0
 public void handle(RegistrationInfoFactory infoFactory, IrcDotNet.IrcClient client, FehBot bot, MongoDB.Driver.IMongoDatabase db, IrcDotNet.IrcUser from, IrcDotNet.IrcChannel to, string message)
 {
     throw new NotImplementedException();
 }
コード例 #5
0
ファイル: TellHandler.cs プロジェクト: ziccardi/fehbot
        public void handle(RegistrationInfoFactory infoFactory, IrcDotNet.IrcClient client, FehBot bot, MongoDB.Driver.IMongoDatabase db, IrcDotNet.IrcUser from, IrcDotNet.IrcChannel to, string message)
        {
            var nickName          = infoFactory.NickName;
            var messageCollection = db.GetCollection <BsonDocument> ("Message");

            if (isTellMessage(message, nickName))
            {
                Tuple <string, string> request = parseRequest(HandlerUtils.removeMention(message, nickName));
                if (!request.Item1.Equals(nickName))
                {
                    messageCollection.InsertOne(new BsonDocument {
                        { "network", infoFactory.Server },
                        { "channel", to.Name.ToLower() },
                        { "recipient", request.Item1 },
                        { "sender", from.NickName },
                        { "message", request.Item2 }
                    });
                    client.LocalUser.SendMessage(to, from.NickName + ": kk");
                    var messageObject = new JObject();

                    messageObject.Add("channel", to.Name.ToLower());
                    messageObject.Add("recipient", request.Item1);
                    messageObject.Add("sender", from.NickName);
                    messageObject.Add("message", request.Item2);
                    callWebHook(db, messageObject);
                }
            }
            else
            {
                var builder = Builders <BsonDocument> .Filter;
                var filter  = builder.Eq("recipient", from.NickName) & builder.Eq("channel", to.Name.ToLower()) & builder.Eq("network", infoFactory.Server);
                messageCollection.Find(filter).ForEachAsync((document) => {
                    var objectId    = document.GetValue("_id").AsObjectId;
                    var createdDate = objectId.CreationTime;
                    DateDiff diff   = new DateDiff(createdDate, DateTime.Now.ToUniversalTime());
                    client.LocalUser.SendMessage(to, String.Format("({0} ago) {1} => {2}, {3}", diff.GetDescription(6), document.GetValue("sender").AsString, document.GetValue("recipient").AsString, document.GetValue("message").AsString));
                    messageCollection.DeleteOne(document);
                });
            }
        }
コード例 #6
0
ファイル: KarmaHandler.cs プロジェクト: ziccardi/fehbot
        public void handle(RegistrationInfoFactory infoFactory, IrcDotNet.IrcClient client, FehBot bot, IMongoDatabase db, IrcDotNet.IrcUser from, IrcDotNet.IrcChannel channel, string message)
        {
            if (channel == null)
            {
                return;
            }

            if (isKarmaRequest(message))
            {
                var request = parseKarmaRequest(message);
                request.Keys.ForEach(nick => {
                    Karma document = db.UpdateKarma(nick, channel.Name, infoFactory.Server, request[nick]);

                    string template = request[nick] > 0 ? "{0} gained a level! (Karma: {1})":"{0} lost a level! (Karma: {1})";
                    client.LocalUser.SendMessage(channel, String.Format(template, nick, document.Score));
                    JObject body = new JObject();

                    body.Add("nick", document.Nick);
                    body.Add("from", from.NickName);
                    body.Add("score", document.Score);
                    body.Add("channel", document.Channel);
                    body.Add("direction", request[nick]);
                    callWebHook(db, body);
                });
            }
        }