Beispiel #1
0
    public void Init(BotType _botType, int _botID, float _x, float _y)
    {
        t               = transform;
        mat             = GetComponent <Renderer>().material;
        fireSim         = FireSim.INSTANCE;
        arriveThreshold = t.localScale.x * 1f;
        t.position      = new Vector3(_x, t.localScale.y * 0.5f, _y);
        decisionTimer   = decisionRate;

        botID           = _botID;
        carrying        = null;
        targetBucket    = null;
        isFillingBucket = false;
        Setup_BotType(_botType);
        name = _botType.ToString();
    }
Beispiel #2
0
        public void SendMessage(BotType target, string message)
        {
            switch (target)
            {
            case BotType.Osu:
            {
                string composed = ComposeRawMessage(target, message);
                m_osuClient.SendRawMessage(composed);
            }
            break;

            case BotType.Twitch:
            {
                string composed = ComposeRawMessage(target, message);
                m_twitchClient.SendRawMessage(composed);
            }
            break;
            }

#if DEBUG
            Console.WriteLine($"{target.ToString()} sent: {message}");
#endif
        }
Beispiel #3
0
 private void CommandLog(BotType target, string message)
 {
     Console.WriteLine($"{target.ToString()}: {message}");
 }
Beispiel #4
0
        private async void ParseMessage(BotType target, IrcRawMessageEventArgs e)
        {
            switch (e.Message.Command)
            {
            // messages to ignore
            case "002":     // twitch
            case "003":
            case "004":
            case "375":
            case "376":
            case "353":
            case "366":
            case "372":     // osu! motd
            case "QUIT":
                break;

            case "PRIVMSG":
#if DEBUG
                Console.WriteLine($"{target.ToString()}: {e.Message.Source.Name}: {e.Message.Parameters[1]}");
#endif

                if (target == BotType.Twitch)
                {
                    string   source  = e.Message.Source.Name;
                    string   message = e.Message.Parameters[1];
                    string[] request = message.Split(' ');

                    if (message.ToLowerInvariant().StartsWith("!request") || message.ToLowerInvariant().StartsWith("!req"))
                    {
                        if (!request[1].Contains("osu.ppy.sh/b/") && !request[1].Contains("osu.ppy.sh/s/"))
                        {
                            SendMessage(BotType.Twitch, $"@{source} that is an invalid beatmap.");
                            return;
                        }

                        string[] map = await Globals.OsuApiHelper.GetBeatmap(request[1]);

                        if (map[0] == "404")
                        {
                            SendMessage(BotType.Twitch, $"@{source} map not found.");
                        }

                        SendMessage(BotType.Osu, $"{source} requests {map[0]} to be played!");
                        SendMessage(BotType.Twitch, $"@{source} sent request for {map[1]} to be played");
                    }
                }
                break;

            case "PING":
            {
                switch (target)
                {
                case BotType.Osu:
                    m_osuClient.SendRawMessage("PONG");
                    break;

                case BotType.Twitch:
                    m_twitchClient.SendRawMessage("PONG");
                    break;
                }
            }
            break;

            case "JOIN":
                if (target == BotType.Twitch)
                {
                    CommandLog(target, $"Joined channel #{m_twitchChat}");
                }
                break;

            case "001":
                CommandLog(target, "Auth Success");

                if (target == BotType.Twitch)
                {
                    m_twitchClient.SendRawMessage($"JOIN #{m_twitchChat}\r\n");
                }

                break;

            case "464":
                CommandLog(target, "Auth Fail");
                break;

            default:
#if DEBUG
                CommandLog(target, $"{e.Message.Source.Name}: {e.Message.Command} - {String.Join(", ", e.Message.Parameters)}");
#endif
                break;
            }
        }
Beispiel #5
0
        public IActionResult CreateNewBotForSales(TokenChange tokenModel, BotType botType)
        {
            int accountId = (int)HttpContext.Items["accountId"];

            try
            {
                string token         = tokenModel?.Token;
                string botUsername   = new TelegramBotClient(token).GetMeAsync().Result.Username;
                string jsonBotMarkup = localizer[botType.ToString()];

                int statusGroupId = contextDb.OrderStatusGroups.First(stat => stat.OwnerId == accountId).Id;



                //нужно установить групппу статусов
                if (jsonBotMarkup.Contains("1000001"))
                {
                    jsonBotMarkup = jsonBotMarkup.Replace("1000001", statusGroupId.ToString());
                }


                BotDB bot = new BotDB
                {
                    OwnerId = accountId,
                    BotType = "BotForSales",
                    Token   = token,
                    BotName = botUsername,
                    Markup  = jsonBotMarkup
                };

                contextDb.Bots.Add(bot);

                //Создание статистики для бота
                BotForSalesStatistics botForSalesStatistics = new BotForSalesStatistics
                {
                    Bot = bot, NumberOfOrders = 0, NumberOfUniqueMessages = 0, NumberOfUniqueUsers = 0
                };

                contextDb.BotForSalesStatistics.Add(botForSalesStatistics);

                try
                {
                    contextDb.SaveChanges();
                }
                catch (Exception exception)
                {
                    throw new TokenMatchException("Возможно в базе уже есть этот бот", exception);
                }

                return(RedirectToAction("SalesTreeEditor", "BotForSalesEditing", new { botId = bot.Id }));
            }
            catch (TokenMatchException ex)
            {
                logger.Log(LogLevel.USER_ERROR, Source.WEBSITE, $"Сайт. Создание нового бота. При " +
                           $"запросе botUsername было выброшено исключение (возможно, введённый" +
                           $"токен был специально испорчен)" + ex.Message, accountId: accountId);

                ModelState.AddModelError("", "Этот бот уже зарегистрирован.");
            }
            catch (Exception ee)
            {
                logger.Log(LogLevel.USER_ERROR, Source.WEBSITE, $"Сайт. Создание нового бота. При " +
                           $"запросе botUsername было выброшено исключение (возможно, введённый" +
                           $"токен был специально испорчен)" + ee.Message, accountId: accountId);

                ModelState.AddModelError("", "Ошибка обработки токена.");
            }


            return(View("BotForSalesTokenEntry"));
        }