public async Task Price() { await Context.Channel.DeleteMessageAsync(Context.Message); var routing = FarmRoomManager.GetRoomRouting(); var room = routing.GetRoom(Context.Channel); if (DateTime.Now < room.Cash.NextMinimalPriceMessageDate) { await Context.Channel.SendMessageAsync($"Команда заблокирована до {room.Cash.NextMinimalPriceMessageDate}"); return; } if (room.LastMinimalPrice == 0) { await Context.Channel.SendMessageAsync("Бот ещё не совершил мониторинг цен"); } else { room.Cash.NextMinimalPriceMessageDate = DateTime.Now.AddDays(7); lock (room.Cash) { FarmRoomManager.GetRoomRouting().SaveCashRooms(); } await Context.Channel.SendMessageAsync($"Текущая ствака {room.LastMinimalPrice}"); } }
public async Task farmRoomInfo() { await Context.Channel.DeleteMessageAsync(Context.Message); var routing = FarmRoomManager.GetRoomRouting(); StringBuilder builder = new StringBuilder(); var count = 0; foreach (var room in routing.Rooms) { count++; builder.AppendLine($"**{room.Name}**"); builder.AppendLine($"Баланс {room.Balance}"); builder.AppendLine($"Минимальная ставка {room.Cash.MinLos}"); builder.AppendLine($"---------------------"); if (count > 10) { await Context.Channel.SendMessageAsync(builder.ToString()); count = 0; builder.Clear(); } } }
public async Task Disable() { await Context.Channel.DeleteMessageAsync(Context.Message); var routing = FarmRoomManager.GetRoomRouting(); var room = routing.GetRoom(Context.Channel); room.RemoveClient(Context.User.Id); }
public async Task Wipe() { await Context.Channel.DeleteMessageAsync(Context.Message); var routing = FarmRoomManager.GetRoomRouting(); var room = routing.GetRoom(Context.Channel); room.RemoveAll(); }
public async Task Update(int value) { await Context.Channel.DeleteMessageAsync(Context.Message); var routing = FarmRoomManager.GetRoomRouting(); var room = routing.GetRoom(Context.Channel); room.UpdateMinutes = value; await room.SendBalanceMessage(); }
public async Task Cancel(string orderId) { var routing = FarmRoomManager.GetRoomRouting(); var room = routing.GetRoom(Context.Channel); var curOrder = room.Orders.FirstOrDefault(_ => _.OrderId.Contains(orderId)); if (curOrder != null) { curOrder.IsCansel = true; await Context.Channel.DeleteMessageAsync(curOrder.OrderMessageId); room.Orders.Remove(curOrder); } }
public async Task Gold(int value) { await Context.Channel.DeleteMessageAsync(Context.Message); var routing = FarmRoomManager.GetRoomRouting(); var room = routing.GetRoom(Context.Channel); var client = room.GetClient(Context.User); client.SetGoldAmount(value); room.UpdateBalance(); await room.SendBalanceMessage(); }
public async Task Minimal(decimal value, string channelName) { await Context.Channel.DeleteMessageAsync(Context.Message); var routing = FarmRoomManager.GetRoomRouting(); var room = routing.Rooms.FirstOrDefault(_ => _.Name.ToLower().Contains(channelName.ToLower())); if (room == null) { await Context.Channel.SendMessageAsync($"Сервер {channelName} не был найден"); } else { var embed = room.SetMinLos(value); await Context.Channel.SendMessageAsync("", false, embed); } }
public async Task Set(int gold, [Remainder] string username) { await Context.Channel.DeleteMessageAsync(Context.Message); var routing = FarmRoomManager.GetRoomRouting(); var room = routing.GetRoom(Context.Channel); var selectClient = room.Cash.Clinets.FirstOrDefault(_ => _.Name.ToLower().Contains(username.ToLower())); if (selectClient == null) { await Context.User.SendMessageAsync($"Пользователь с ником {username} не найден"); } else { selectClient.SetGoldAmount(gold); room.UpdateBalance(); await room.SendBalanceMessage(); } }
public async Task Create(int gold, string name) { await Context.Channel.DeleteMessageAsync(Context.Message); var users = await Context.Channel.GetUsersAsync().FlattenAsync(); var addedUser = users.FirstOrDefault(_ => _.Username.ToLower().Contains(name.ToLower())); if (addedUser != null) { var routing = FarmRoomManager.GetRoomRouting(); var room = routing.GetRoom(Context.Channel); var client = room.GetClient(addedUser); client.SetGoldAmount(gold); room.UpdateBalance(); await room.SendBalanceMessage(); } }
public async Task Minimal() { await Context.Channel.DeleteMessageAsync(Context.Message); var embed = new EmbedBuilder(); embed.WithTitle("Минимальные ставки"); var rooms = FarmRoomManager.GetRoomRouting().Rooms; foreach (var room in rooms) { try { embed.AddField(room.Name, room.MinLos, false); } catch { } } await Context.Channel.SendMessageAsync("", false, embed.Build()); }
public async Task Order(int value) { await Context.Channel.DeleteMessageAsync(Context.Message); var routing = FarmRoomManager.GetRoomRouting(); var room = routing.GetRoom(Context.Channel); G2gOrder order = new G2gOrder() { Buyer = "Udenlo", Amount = value, OrderId = "№4170194", Server = "Benediction [US] Alliance" }; room.AddOrder(order); Emoji react = new Emoji("💰"); var message = await Context.Channel.SendMessageAsync("", false, order.GetOrderEmbed()); await message.AddReactionAsync(react); }
private async Task HandleReactionAddedAsync( Cacheable <IUserMessage, ulong> arg1, ISocketMessageChannel arg2, SocketReaction arg3) { var manager = FarmRoomManager.GetRoomRouting(); var room = manager.GetRoom(arg2); var user = room.Cash.Clinets.FirstOrDefault(_ => _.Id == arg3.UserId); if (arg3.Emote.ToString() != "💰" || user == null) { return; } ; var lMessage = await arg1.GetOrDownloadAsync(); var orderId = lMessage.Embeds.FirstOrDefault() .Fields.FirstOrDefault(_ => _.Name == "Order") .Value; var curOrder = room.Orders.FirstOrDefault(_ => _.OrderId.Contains(orderId)); if (curOrder == null && curOrder?.Performer != null) { Console.WriteLine($"{DateTime.Now}: Order adoption canceled \n" + $"Order performer alredy exist"); return; } curOrder.SetPerformer(user); lMessage.ModifyAsync(msg => msg.Embed = curOrder.GetOrderEmbed()).Wait(); Thread.Sleep(2000); await lMessage.RemoveAllReactionsAsync(); OrderWatchManager.AddOperation(new AcceptOrder(curOrder)); }
private async Task AsyncStart(IWebDriver driver) { _driver = driver; if (driver.Url != _url) { Update(); } if (_lastWatchTime.ElapsedMilliseconds > 60000) { Update(); } else { Thread.Sleep(1000); } IWebElement currentOrder = null; FarmRoom currentRoom = null; try { //Open new order var newOrders = driver.FindElements(By.ClassName("sales-history__table-row-unread")); //Check for room exist var root = FarmRoomManager.GetRoomRouting(); foreach (var el in newOrders) { foreach (var room in root.Rooms) { var formatedLabel = Regex .Replace(el.FindElement(By.ClassName("sales-history__product-name")) .Text.ToLower(), "[’']", ""); if (formatedLabel.Contains(room.Server) && formatedLabel.Contains(room.Fraction) && room.IsOperationAllowed == true && room.Balance != 0) { currentOrder = el; currentRoom = room; goto RoomExist; } ; } } return; RoomExist: OrderFound?.Invoke(currentRoom); var operationLink = currentOrder.FindElement(By.ClassName("sales-history__product-id")); operationLink.Click(); //View order details var btn = driver.WaitElement(By.ClassName("progress_gr")); Thread.Sleep(1000); btn.Click(); Thread.Sleep(1000); try { var orderServer = driver.WaitElement(By.XPath(BuildXpathString("Server"))).Text; driver.WaitElement(By.XPath("//a[contains(@class, 'progress_gr') and contains(text(), 'Start Trading')]")) .Click(); //Parse order info var fraction = driver.WaitElement(By.XPath(BuildXpathString("Faction"))).Text; var buyer = driver.WaitElement(By.XPath(BuildXpathString("Character Name"))).Text; var OrderNumberEl = driver.WaitElement(By.CssSelector(".trade__order__top-num")); var amount = int.Parse(driver .WaitElement(By.XPath("//td[@class = 'sales-history__table-quantity' and contains(@data-th, 'QTY.')]")) .Text.Replace(",", "")); var orderNumber = Regex.Match(OrderNumberEl.Text, @"SOLD ORDER №\d*").Value.Replace("SOLD ORDER", ""); string BuildXpathString(string fieldName) { return($"//span[contains(@class, 'game-info__title') and contains(text(), '{fieldName}')]/../span[contains(@class, 'game-info__info')]"); } Thread.Sleep(1000); //Create order in discord room var titles = driver.WaitElement(By.ClassName("purchase-title")).Text.Split('>'); var myOrder = new Model.G2gOrder() { Buyer = buyer, OrderId = orderNumber, Amount = amount, Server = $"{titles[1].FirstCharUp()} {titles[2].Replace("(GOLD)", "")}", Fraction = fraction, OrderPage = driver.Url, RoomSender = currentRoom }; currentRoom.AddOrder(myOrder); currentRoom.SendOrderInChannle(myOrder); } catch (Exception ex) { var admins = await GetAdmins(); if (admins != null) { foreach (var item in admins) { await item.SendMessageAsync($"Ошибка отправки ордера на :{currentRoom.Channel.Name} (ex: {ex.Message})"); } } throw; } } catch (Exception ex) { var admins = await GetAdmins(); if (admins != null) { var servicesUser = admins.FirstOrDefault(_ => _.Username == "Hatab2010"); if (servicesUser != null) { await servicesUser.SendMessageAsync(ex.Message); } } Console.WriteLine(ex); } async Task <IEnumerable <IUser> > GetAdmins() { if (currentRoom != null) { var users = await currentRoom.Channel.GetUsersAsync().FlattenAsync(); return(users.Where(_ => (((IGuildUser)_) .GetPermissions((IGuildChannel)currentRoom.Channel)) .ToList().Contains(ChannelPermission.ManageChannels) && _.IsBot == false)); } else { return(null); } } }
private async Task OnReady() { var manager = FarmRoomManager.GetRoomRouting(); manager.Load(_client); }