public async Task HandleAsync(IUpdateContext context, UpdateDelegate next, CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg = context.Update.Message;

            ConsoleHelper.WriteLine("Media received... ");
            var isBan = await _mediaFilterService.IsExistInCache("file_id", msg.GetReducedFileId());

//            var isBan = await _mediaFilterService.IsExist("file_id", msg.GetReducedFileId());
            if (isBan)
            {
                await _chatProcessor.DeleteAsync(msg.MessageId);
            }

            ConsoleHelper.WriteLine($"Media isBan: {isBan}");

            if (Bot.HostingEnvironment.IsProduction())
            {
                await _mediaFilterService.UpdateCacheAsync();
            }
            else
            {
                ConsoleHelper.WriteLine($"Update cache skipped because local Env");
            }

            ConsoleHelper.WriteLine("Media Filter complete.");

            await next(context);
        }
예제 #2
0
        public void EndLoad(ClientConnection connection)
        {
            lock (_lOnline)
            {
                if (connection.ActivePlayer != null)
                {
                    var player = connection.ActivePlayer;
                    if (!_onlineCharacters.ContainsKey(player.GameSessionId))
                    {
                        _onlineCharacters.Add(player.GameSessionId, player);
                    }

                    connection.ActivePlayer.PlayerActions += (action, parameters) =>
                    {
                        switch (action)
                        {
                        case Player.PlayerAction.Logout:
                            if (_onlineCharacters.ContainsKey(player.GameSessionId))
                            {
                                _onlineCharacters.Remove(player.GameSessionId);
                                Log.Debug($"Player:{player.DatabaseCharacterData.CharacterName} has left the world");
                            }
                            break;

                        case Player.PlayerAction.Chat:
                            ChatProcessor.HandleChatMessage(connection, parameters);
                            break;
                        }
                    };
                }
            }
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args, CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);

            var botName    = Bot.GlobalConfiguration["Engines:ProductName"];
            var botVer     = Bot.GlobalConfiguration["Engines:Version"];
            var botCompany = Bot.GlobalConfiguration["Engines:Company"];

            string sendText = $"🤖 {botName} {botVer}" +
                              $"\nby {botCompany}." +
                              $"\nAdalah bot debugging, manajemen grup yang di lengkapi dengan alat keamanan. " +
                              $"Agar fungsi saya bekerja dengan fitur penuh, jadikan saya admin dengan level standard. " +
                              $"\nSaran dan fitur bisa di ajukan di @WinTenGroup atau @TgBotID.";

            var urlStart = await "help".GetUrlStart();
            var keyboard = new InlineKeyboardMarkup(
                InlineKeyboardButton.WithUrl("Dapatkan bantuan", urlStart)
                );

            if (_chatProcessor.IsPrivateChat())
            {
                keyboard = new InlineKeyboardMarkup(new[]
                {
                    new[]
                    {
                        InlineKeyboardButton.WithCallbackData("Bantuan", "help home"),
                        InlineKeyboardButton.WithUrl("Pasang Username", "https://t.me/WinTenDev/29")
                    }
                });
            }

            await _chatProcessor.SendAsync(sendText, keyboard);
        }
예제 #4
0
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            var msg = context.Update.Message;

            _chatProcessor   = new ChatProcessor(context);
            _settingsService = new SettingsService(msg);


            var sendText = "Under maintenance";

            if (msg.Chat.Type != ChatType.Private)
            {
                if (msg.From.Id.IsSudoer())
                {
                    var settings = await _settingsService.GetSettingByGroup();

                    await _settingsService.UpdateCache();

                    ConsoleHelper.WriteLine(settings.ToJson());
                    // var rules = settings.Rows[0]["rules_text"].ToString();
                    var rules = settings.RulesText;
                    ConsoleHelper.WriteLine(rules);
                    sendText = rules;
                }
            }
            else
            {
                sendText = "Rules hanya untuk grup";
            }

            await _chatProcessor.SendAsync(sendText);
        }
예제 #5
0
        public async Task HandleAsync(IUpdateContext context, UpdateDelegate next, CancellationToken cancellationToken)
        {
            Message msg = context.Update.Message;

            _elasticSecurityService = new ElasticSecurityService(msg);
            _chatProcessor          = new ChatProcessor(context);
            var leftMember = msg.LeftChatMember;
            var isBan      = await _elasticSecurityService.IsExistInCache(leftMember.Id);

            if (!isBan)
            {
                ConsoleHelper.WriteLine("Left Chat Members...");

                var chatTitle = msg.Chat.Title;

                var newMembers   = msg.LeftChatMember;
                var leftFullName = newMembers.FirstName;


                // var fromName = msg.From.FirstName;

                var sendText = $"Sampai jumpa lagi {leftFullName} " +
                               $"\nKami di <b>{chatTitle}</b> menunggumu kembali.. :(";

                await _chatProcessor.SendAsync(sendText);
            }
            else
            {
                ConsoleHelper.WriteLine($"Left Message ignored because {leftMember} is Global Banned");
            }
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args, CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg      = context.Update.Message;
            var partsMsg = msg.Text.GetTextWithoutCmd().Split("|").ToArray();

            var isSudoer = _chatProcessor.IsSudoer();

            if (isSudoer)
            {
                var sendText = "Maaf, saya harus keluar";

                if (partsMsg[1] != null)
                {
                    sendText += $"\n{partsMsg[1]}";
                }
                var chatId = partsMsg[0].ToInt64();

                ConsoleHelper.WriteLine($"Target out: {chatId}");
                await _chatProcessor.SendAsync(sendText, customChatId : chatId);

                await _chatProcessor.LeaveChat(chatId);
            }
            else
            {
                await _chatProcessor.SendAsync("Kamu tidak punya hak akses.");
            }
        }
예제 #7
0
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg = context.Update.Message;

            var data = new Dictionary <string, object>()
            {
                { "user_id", msg.From.Id },
                { "chat_id", msg.Chat.Id },
                { "is_afk", 1 }
            };

            var sendText = $"{msg.GetFromNameLink()} Sedang afk.";

            if (msg.Text.GetTextWithoutCmd() != "")
            {
                var afkReason = msg.Text.GetTextWithoutCmd();
                data.Add("afk_reason", afkReason);

                sendText += $"\n<i>{afkReason}</i>";
            }

            await _chatProcessor.SendAsync(sendText);

            await _afkService.SaveAsync(data);

            await _afkService.UpdateCacheAsync();
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);

            var notesData = await _notesService.GetNotesByChatId(_chatProcessor.Message.Chat.Id);

            var sendText = "Filters di Obrolan ini.";

            if (notesData.Rows.Count > 0)
            {
                foreach (DataRow note in notesData.Rows)
                {
                    sendText += $"\nID: {note["id_note"]} - ";
                    sendText += $"{note["slug"]}";
                }
            }
            else
            {
                sendText = "Tidak ada Filters di Grup ini." +
                           "\nUntuk menambahkannya ketik /addfilter";
            }

            await _notesService.UpdateCache(_chatProcessor.Message.Chat.Id);

            await _chatProcessor.SendAsync(sendText);
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args, CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg = context.Update.Message;

            if (msg.ReplyToMessage != null)
            {
                msg = msg.ReplyToMessage;
            }

            var userId   = msg.From.Id;
            var nameLink = msg.GetFromNameLink();

            var sendText = $"{nameLink} diturunkan dari admin";

            var promote = await _chatProcessor.DemoteChatMemberAsync(userId);

            if (!promote.IsSuccess)
            {
                var errorCode    = promote.ErrorCode;
                var errorMessage = promote.ErrorMessage;

                sendText = $"Demote {nameLink} gagal" +
                           $"\nPesan: {errorMessage}";
            }

            await _chatProcessor.SendAsync(sendText);
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            var msg    = context.Update.Message;
            var chatId = msg.Chat.Id;
            var fromId = msg.From.Id;

            _chatProcessor          = new ChatProcessor(context);
            _elasticSecurityService = new ElasticSecurityService(msg);

            if (fromId.IsSudoer())
            {
                if (msg.ReplyToMessage != null)
                {
                    var repMsg = msg.ReplyToMessage;
                    var userId = repMsg.From.Id;

                    ConsoleHelper.WriteLine("Execute Global DelBan");
                    await _chatProcessor.SendAsync("Mempersiapkan..");

                    await _chatProcessor.DeleteAsync(msg.MessageId);

                    var isBan = await _elasticSecurityService.IsExist(userId);

                    ConsoleHelper.WriteLine($"IsBan: {isBan}");
                    if (isBan)
                    {
                        await _chatProcessor.EditAsync("Memperbarui informasi..");

                        var save = await _elasticSecurityService.DeleteBanAsync(userId);

                        ConsoleHelper.WriteLine($"SaveBan: {save}");

                        await _chatProcessor.EditAsync("Menulis ke Cache..");

                        await _elasticSecurityService.UpdateCacheAsync();

                        await _chatProcessor.EditAsync("Misi berhasil.");
                    }
                    else
                    {
                        await _chatProcessor.EditAsync("Pengguna tidak di ban");
                    }
                }
                else
                {
                    await _chatProcessor.SendAsync("Balas seseorang yang mau di ban");
                }
            }
            else
            {
                await _chatProcessor.SendAsync("Unauthorized");
            }

            await _chatProcessor.DeleteAsync(delay : 3000);
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args, CancellationToken cancellationToken)
        {
            chatProcessor = new ChatProcessor(context);

            await chatProcessor.SendAsync("Migrate starting..");

            Thread.Sleep(3000);

            await chatProcessor.EditAsync("Migrate finish..");
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg = context.Update.Message;

            _settingsService = new SettingsService(msg);


            ConsoleHelper.WriteLine($"Args: {string.Join(" ", args)}");
            var sendText = "Perintah /welcome hanya untuk grup saja";

            if (msg.Chat.Type != ChatType.Private)
            {
                var chatTitle = msg.Chat.Title;
                var settings  = await _settingsService.GetSettingByGroup();

                var welcomeMessage     = settings.WelcomeMessage;
                var welcomeButton      = settings.WelcomeButton;
                var welcomeMedia       = settings.WelcomeMedia;
                var welcomeMediaType   = settings.WelcomeMediaType;
                var splitWelcomeButton = welcomeButton.Split(',').ToList <string>();

                var keyboard = welcomeButton.ToReplyMarkup(2);
                sendText = $"👥 <b>{chatTitle}</b>\n";
                if (welcomeMessage == "")
                {
                    sendText += "Tidak ada konfigurasi pesan welcome, pesan default akan di terapkan";
                }
                else
                {
                    sendText += welcomeMessage;
                }

//                if (args[0] == "anu")
//                {
//                    sendText += " anu";
//                }

//                sendText += " " + string.Join(", ",args);
                if (welcomeMediaType != "")
                {
                    await _chatProcessor.SendMediaAsync(welcomeMedia, welcomeMediaType, welcomeMessage, keyboard);
                }
                else
                {
                    await _chatProcessor.SendAsync(sendText, keyboard);
                }
            }
            else
            {
                await _chatProcessor.SendAsync(sendText);
            }
        }
        public async Task HandleAsync(IUpdateContext context, UpdateDelegate next, CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg = context.Update.Message;

            var pinnedMsg = msg.PinnedMessage;
            var sendText  = $"📌 Pesan di sematkan baru!" +
                            $"\nPengirim: {pinnedMsg.GetFromNameLink()}" +
                            $"\nPengepin: {msg.GetFromNameLink()}";

            await _chatProcessor.SendAsync(sendText);
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args, CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);

            var msg  = context.Update.Message;
            var json = msg.ToJson(true);

            ConsoleHelper.WriteLine(json.Length);

            var sendText = $"Debug:\n {json}";
            await _chatProcessor.SendAsync(sendText);
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            Message msg = context.Update.Message;

            _chatProcessor   = new ChatProcessor(context);
            _settingsService = new SettingsService(msg);

            var id       = msg.From.Id;
            var sendText = "Under maintenance";

            ConsoleHelper.WriteLine(id.IsSudoer());

            await _chatProcessor.DeleteAsync(msg.MessageId);

            await _chatProcessor.SendAsync("🔄 Loading tags..");

            var tagsData = await _tagsService.GetTagsByGroupAsync("*", msg.Chat.Id);

            var tagsStr = string.Empty;

            foreach (var tag in tagsData)
            {
                tagsStr += $"#{tag.Tag} ";
            }

            sendText = $"#️⃣<b> {tagsData.Count} Tags</b>\n" +
                       $"\n{tagsStr}";

            await _chatProcessor.EditAsync(sendText);

            //            var jsonSettings = TextHelper.ToJson(currentSetting);
            //            ConsoleHelper.WriteLine($"CurrentSettings: {jsonSettings}");

            // var lastTagsMsgId = int.Parse(currentSetting.Rows[0]["last_tags_message_id"].ToString());

            var currentSetting = await _settingsService.GetSettingByGroup();

            var lastTagsMsgId = currentSetting.LastTagsMessageId;

            ConsoleHelper.WriteLine($"LastTagsMsgId: {lastTagsMsgId}");

            await _chatProcessor.DeleteAsync(lastTagsMsgId.ToInt());

            await _tagsService.UpdateCacheAsync(msg);

            ConsoleHelper.WriteLine(_chatProcessor.SentMessageId);
            await _settingsService.UpdateCell("last_tags_message_id", _chatProcessor.SentMessageId);


//            var json = TextHelper.ToJson(tagsData);
            //                Console.WriteLine(json);
        }
예제 #16
0
        public async Task HandleAsync(IUpdateContext context, UpdateDelegate next, CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            CallbackQuery cq = context.Update.CallbackQuery;

            _chatProcessor.CallBackMessageId = cq.Message.MessageId;

            ConsoleHelper.WriteLine(cq.ToJson());
            ConsoleHelper.WriteLine($"CallBackData: {cq.Data}");

            var partsCallback = cq.Data.SplitText(" ");

            ConsoleHelper.WriteLine($"Callbacks: {partsCallback.ToJson()}");

            switch (partsCallback[0]) // Level 0
            {
            case "help":
                var sendText = await partsCallback[1].LoadInBotDocs();
                ConsoleHelper.WriteLine($"Docs: {sendText}");
                var subPartsCallback = partsCallback[1].SplitText("/");

                ConsoleHelper.WriteLine($"SubParts: {subPartsCallback.ToJson()}");
                var jsonButton = partsCallback[1];

                if (subPartsCallback.Count > 1)
                {
                    jsonButton = subPartsCallback[0];

                    switch (subPartsCallback[1])
                    {
                    case "info":
                        jsonButton = subPartsCallback[1];
                        break;
                    }
                }

                var keyboard = await $"Storage/Buttons/{jsonButton}.json".JsonToButton();


                await _chatProcessor.EditMessageCallback(sendText, keyboard);

                // var a = new HelpCallbackQuery(cq);
                break;

            case "verification":
                break;
            }

            // await context.Bot.Client.AnswerCallbackQueryAsync(cq.Id, "PONG", true);

            await next(context);
        }
예제 #17
0
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg      = context.Update.Message;
            var sendText = "Balas pesan yg mau di report";

            if (msg.Chat.Type == ChatType.Private)
            {
                await _chatProcessor.SendAsync("Report hanya untuk grup saja");

                return;
            }

            if (msg.ReplyToMessage != null)
            {
                var repMsg = msg.ReplyToMessage;

                if (msg.From.Id != repMsg.From.Id)
                {
                    var mentionAdmins = await _chatProcessor.GetMentionAdminsStr();

                    sendText = $"Ada laporan nich." +
                               $"\n{msg.GetFromNameLink()} melaporkan {repMsg.GetFromNameLink()}" +
                               $"{mentionAdmins}";

                    var keyboard = new InlineKeyboardMarkup(new[]
                    {
                        new[]
                        {
                            InlineKeyboardButton.WithCallbackData("Hapus", "PONG"),
                            InlineKeyboardButton.WithCallbackData("Tendang", "PONG"),
                        },
                        new[]
                        {
                            InlineKeyboardButton.WithCallbackData("Ban", "PONG"),
                            InlineKeyboardButton.WithCallbackData("Ke Pesan", "PONG"),
                        }
                    });

                    await _chatProcessor.SendAsync(sendText);

                    return;
                }

                sendText = "Melaporkan diri sendiri? 🤔";
            }


            await _chatProcessor.SendAsync(sendText);
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg = context.Update.Message;

            var sendText = "Saat ini hanya untuk Sudoer saja.";

            if (msg.From.Id.IsSudoer())
            {
                sendText = "Reply pesan untuk menyaring..";
                if (msg.ReplyToMessage != null)
                {
                    var repMsg = msg.ReplyToMessage;
                    ConsoleHelper.WriteLine(msg.Type);

                    var fileId = repMsg.GetReducedFileId();

                    var isExist = await _mediaFilterService.IsExist("file_id", fileId);

                    if (!isExist)
                    {
                        var data = new Dictionary <string, object>()
                        {
                            { "file_id", fileId },
                            { "type_data", repMsg.Type.ToString().ToLower() },
                            { "blocked_by", msg.From.Id },
                            { "blocked_from", msg.Chat.Id }
                        };

                        await _mediaFilterService.SaveAsync(data);

                        sendText = "File ini berhasil di simpan";
                    }
                    else
                    {
                        sendText = "File ini sudah di simpan";
                    }
                }
            }
            else
            {
                sendText =
                    "Fitur ini membutuhkan akses Sudoer, namun file yang Anda laporkan sudah di teruskan ke Team, " +
                    "terima kasih atas laporan nya.";
            }

            await _chatProcessor.SendAsync(sendText);
        }
예제 #19
0
        private void InternalProcess(GameClient Client, byte[] Packet)
        {
            fixed(byte *pPacket = Packet)
            {
                ushort *Size = (ushort *)(pPacket + 0);
                ushort *Type = (ushort *)(pPacket + 2);

                if (*Size != Packet.Length)
                {
                    SizeMismatch(Client, *Size, Packet);
                    return;
                }

                Kernel.HexDump(Packet, "Client -> Server");

                IPacketProcessor processor = null;

                switch (*Type)
                {
                case 0x3E9: processor = new CreateCharacterProcessor(Database); break;

                case 0x3EC: processor = new ChatProcessor(Database, CommandProcessor, NpcScriptEngine); break;

                case 0x3ED: processor = new MovementProcessor(Database); break;

                case 0x3F1: processor = new ItemUsageProcessor(Database); break;

                case 0x3F2: processor = new GeneralDataProcessor(Database); break;

                case 0x3FE: processor = new AttackProcessor(Database); break;

                case 0x41C: processor = new LoginTransferProcessor(Database); break;

                case 0x7EF:
                case 0x7F0:
                    processor = new NpcProcessor(Database, NpcScriptEngine);
                    break;

                default:
                    Client.Send(Packet);
                    break;
                }

                if (processor != null)
                {
                    processor.Execute(Client, pPacket);
                }
            }
        }
예제 #20
0
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args, CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);

            var sendText = "Untuk mendapatkan bantuan klik tombol dibawah ini";
            var urlStart = await "help".GetUrlStart();
            var keyboard = new InlineKeyboardMarkup(
                InlineKeyboardButton.WithUrl("Dapatkan bantuan", urlStart)
                );

            if (_chatProcessor.IsPrivateChat())
            {
                sendText = await "home".LoadInBotDocs();
                keyboard = await "Storage/Buttons/home.json".JsonToButton();
            }

            await _chatProcessor.SendAsync(sendText, keyboard);
        }
예제 #21
0
        public async Task HandleAsync(IUpdateContext context, UpdateDelegate next, CancellationToken cancellationToken)
        {
            chatProcessor = new ChatProcessor(context);

            Message msg = context.Update.Message;

            ConsoleHelper.WriteLine("Tags Received..");
            var partsText = msg.Text.Split(new char[] { ' ', '\n', ',' })
                            .Where(x => x.Contains("#"));

            var limitedTags = partsText.Take(5);

            //            int count = 1;
            foreach (var split in limitedTags)
            {
                ConsoleHelper.WriteLine("Processing : " + split.TrimStart('#'));
                //                await chatProcessor.SendAsync($"This is tag of {split}");
                var tagData = await tagsService.GetTagByTag(msg.Chat.Id, split.TrimStart('#'));

                var json = tagData.ToJson();
                Console.WriteLine(json);

                // var content = tagData.Result.Rows[0]["content"].ToString();
                // var buttonStr = tagData.Result.Rows[0]["btn_data"].ToString();

                var content   = tagData[0].Content;
                var buttonStr = tagData[0].BtnData;

                IReplyMarkup buttonMarkup = null;
                if (buttonStr != "")
                {
                    buttonMarkup = buttonStr.ToReplyMarkup(2);
                }

                await chatProcessor.SendAsync(content, buttonMarkup);
            }

            if (partsText.Count() > limitedTags.Count())
            {
                await chatProcessor.SendAsync("Due performance reason, we limit 5 batch call tags");
            }
        }
예제 #22
0
        public Loader()
        {
            // License Check
            //_LicenseChecker    = new LicenseChecker();

            // CSV Files and Logger
            _Logger = new Logger();

            _DirectoryChecker = new DirectoryChecker();

            _CSVManager = new CSVManager();


            // Network and Packets
            _ChatProcessor = new ChatProcessor();

            _ConnectionBlocker = new ConnectionBlocker();

            if (Utils.ParseConfigBoolean("UseWebAPI"))
            {
                _API = new API();
            }

            // Core
            _ResourcesManager = new ResourcesManager();

            _ObjectManager = new ObjectManager();

            _CommandFactory = new CommandFactory();

            _MessageFactory = new MessageFactory();

            // Optimazions
            _MemThread = new MemoryThread();

            // User
            _Parser = new ParserThread();

            // Creates a new Socket
            _Gateway = new Gateway();
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg    = context.Update.Message;
            var client = context.Bot.Client;

            var sendText = "Balas pesan yang akan di pin";

            if (msg.ReplyToMessage != null)
            {
                var pin = client.PinChatMessageAsync(
                    msg.Chat.Id,
                    msg.ReplyToMessage.MessageId);
//                ConsoleHelper.WriteLine(pin.);
            }

            await _chatProcessor.SendAsync(sendText);

//            throw new System.NotImplementedException();
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args, CancellationToken cancellationToken)
        {
            var msg = context.Update.Message;

            chatProcessor = new ChatProcessor(context);

            await chatProcessor.SendAsync("🍽 Loading..");

            //            var admins = context.Update.Message.Chat.AllMembersAreAdministrators;
            var admins = await context.Bot.Client.GetChatAdministratorsAsync(msg.Chat.Id, cancellationToken);

            var creatorStr = string.Empty;
            var adminStr   = string.Empty;
            int number     = 1;

            foreach (var admin in admins)
            {
                var user     = admin.User;
                var nameLink = MemberHelper.GetNameLink(user.Id, (user.FirstName + " " + user.LastName).Trim());
                if (admin.Status == ChatMemberStatus.Creator)
                {
                    creatorStr = nameLink;
                }
                else
                {
                    adminStr += $"{number++}. {nameLink}\n";
                }

                //                Console.WriteLine(TextHelper.ToJson(admin));
                //                await chatProcessor.EditAsync(TextHelper.ToJson(admin));
            }

            var sendText = $"👤 <b>Creator</b>" +
                           $"\n└ {creatorStr}" +
                           $"\n" +
                           $"\n👥️ <b>Administrators</b>" +
                           $"\n{adminStr}";

            await chatProcessor.EditAsync(sendText);
        }
예제 #25
0
        private void InternalProcess(GameClient Client, byte[] Packet)
        {
            fixed (byte* pPacket = Packet)
            {
                ushort *Size = (ushort*)(pPacket + 0);
                ushort* Type = (ushort*)(pPacket + 2);

                if (*Size != Packet.Length)
                {
                    SizeMismatch(Client, *Size, Packet);
                    return;
                }

                Kernel.HexDump(Packet, "Client -> Server");

                IPacketProcessor processor = null;
                switch (*Type)
                {
                    case 0x3E9: processor = new CreateCharacterProcessor(Database); break;
                    case 0x3EC: processor = new ChatProcessor(Database, CommandProcessor, NpcScriptEngine); break;
                    case 0x3ED: processor = new MovementProcessor(Database); break;
                    case 0x3F1: processor = new ItemUsageProcessor(Database); break;
                    case 0x3F2: processor = new GeneralDataProcessor(Database); break;
                    case 0x3FE: processor = new AttackProcessor(Database); break;
                    case 0x41C: processor = new LoginTransferProcessor(Database); break;
                    case 0x7EF:
                    case 0x7F0:
                        processor = new NpcProcessor(Database, NpcScriptEngine);
                        break;
                    default:
                        Client.Send(Packet);
                        break;
                }

                if (processor != null)
                {
                    processor.Execute(Client, pPacket);
                }
            }
        }
예제 #26
0
파일: Bot.cs 프로젝트: Ekays/Dagobar
        // Run: Simply connect and login to the Twitch server
        public void Run()
        {
            IsRunning = true;
            irc.Connect(ConnectionInformations.Twitch); // Connect to Twitch

            /*
             * Ask for Twitch IRC permissions
             * */
            irc.SendData(new string[] {
                "CAP REQ :twitch.tv/tags",
                "CAP REQ :twitch.tv/membership",
                "CAP REQ :twitch.tv/commands"
            });

            irc.Login(new AuthentificationInformations() // Login with the details in the Settings
            {
                Nick     = Properties.Settings.Default.BotNickname,
                Password = Properties.Settings.Default.BotOAuth
            });

            ChatProcessor = new ChatProcessor(this, Core.TwitchAPI.I); // Initialize the Chat Processor object
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg = context.Update.Message;

            if (msg.ReplyToMessage != null)
            {
                var repMsg = msg.ReplyToMessage;
                await _chatProcessor.SendAsync("Mengumpulkan informasi");

                var partsContent = repMsg.Text.Split(new[] { "\n\n" }, StringSplitOptions.None);
                var partsMsgText = msg.Text.GetTextWithoutCmd().Split("\n\n");

                ConsoleHelper.WriteLine(msg.Text);
                ConsoleHelper.WriteLine(repMsg.Text);
                ConsoleHelper.WriteLine(partsContent.ToJson());
                ConsoleHelper.WriteLine(partsMsgText.ToJson());

                var data = new Dictionary <string, object>()
                {
                    { "slug", partsMsgText[0] },
                    { "content", partsContent[0] },
                    { "chat_id", msg.Chat.Id },
                    { "user_id", msg.From.Id }
                };

                if (partsMsgText[1] != "")
                {
                    data.Add("btn_data", partsMsgText[1]);
                }

                await _chatProcessor.EditAsync("Menyimpan..");

                await _notesService.SaveNote(data);

                await _chatProcessor.EditAsync("Berhasil");
            }
        }
예제 #28
0
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var     msg    = context.Update.Message;
            Message repMsg = null;
            var     data   = msg.Text.GetTextWithoutCmd();

            if (msg.ReplyToMessage != null)
            {
                repMsg = msg.ReplyToMessage;
                data   = repMsg.Text ?? repMsg.Caption;
            }

            if (data == "")
            {
                var sendText = "<b>Generate QR from text or caption media</b>" +
                               "\n<b>Usage : </b><code>/qr</code> (In-Reply)" +
                               "\n                <code>/qr your text here</code> (In-Message)";
                await _chatProcessor.SendAsync(sendText);

                return;
            }

            InlineKeyboardMarkup keyboard = null;

            if (repMsg != null)
            {
                keyboard = new InlineKeyboardMarkup(
                    InlineKeyboardButton.WithUrl("Sumber", repMsg.GetMessageLink())
                    );
            }

            var urlQr    = data.GenerateUrlQrApi();
            var fileName = $"{msg.Chat.Id}_{msg.MessageId}.jpg";

            // urlQr.SaveUrlTo(fileName);
            await _chatProcessor.SendMediaAsync(urlQr, "photo", replyMarkup : keyboard);
        }
예제 #29
0
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args, CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg = context.Update.Message;

            var isAdmin = await _chatProcessor.IsAdminGroup();

            var tagVal   = args[0];
            var sendText = "Perintah Untag hanya untuk ngadmin.";

            if (isAdmin)
            {
                await _chatProcessor.SendAsync("Memeriksa..");

                var isExist = await _tagsService.IsExist(_chatProcessor.Message.Chat.Id, tagVal);

                if (isExist)
                {
                    ConsoleHelper.WriteLine($"Sedang menghapus tag {tagVal}");
                    var unTag = await _tagsService.DeleteTag(_chatProcessor.Message.Chat.Id, tagVal);

                    if (unTag)
                    {
                        sendText = $"Hapus tag {tagVal} berhasil";
                    }

                    await _chatProcessor.EditAsync(sendText);

                    return;
                }
                else
                {
                    sendText = $"Tag {tagVal} tidak di temukan";
                }
            }

            await _chatProcessor.SendAsync(sendText);
        }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args, CancellationToken cancellationToken)
        {
            _chatProcessor = new ChatProcessor(context);
            var msg = context.Update.Message;

            if (msg.ReplyToMessage != null)
            {
                msg = msg.ReplyToMessage;
            }

            var chatTitle = msg.Chat.Title;
            var chatId    = msg.Chat.Id;
            var chatType  = msg.Chat.Type;

            var userId   = msg.From.Id;
            var username = msg.From.Username;
            var name     = (msg.From.FirstName + " " + msg.From.LastName).Trim();
            var userLang = msg.From.LanguageCode;

            var text = $"👥 <b>{chatTitle}</b>\n" +
                       $"ID: <code>{chatId}</code>\n" +
                       $"Type: <code>{chatType}</code>\n\n" +
                       $"👤 <b>{name}</b>\n" +
                       $"ID: <code>{userId}</code>\n" +
                       $"Username: @{username}\n" +
                       $"Language: {userLang.ToUpper()}";

            await _chatProcessor.SendAsync(text);

            //            await context.Bot.Client.SendTextMessageAsync(
            //                msg.Chat,
            //                text,
            //                ParseMode.Html,
            //                replyToMessageId: msg.MessageId
            //            );
        }
예제 #31
0
 public ChatHub(ChatProcessor chatService, IHttpContextAccessor httpContextAccessor, AuthorService authorService)
 {
     this.chatService         = chatService;
     this.httpContextAccessor = httpContextAccessor;
     this.authorService       = authorService;
 }