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(); } }
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)); } } }
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); } } }
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(); }
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); }); } }
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); }); } }