示例#1
0
    public IEnumerable <dynamic> GetAll(LearnData learnData)
    {
        var select = _queryService
                     .CreateMySqlFactory()
                     .FromTable(TableName).Get();

        return(select);
    }
示例#2
0
        public static IEnumerable <dynamic> GetAll(LearnData learnData)
        {
            var select = new Query(TableName)
                         .ExecForMysql(true)
                         .Get();

            return(select);
        }
示例#3
0
        public static bool IsExist(LearnData learnData)
        {
            var select = new Query(TableName)
                         .ExecForMysql(true)
                         .Where("message", learnData.Message)
                         .Get();

            return(select.Any());
        }
示例#4
0
 public static LearnData readLearnJson(string fileName)
 {
     using (StreamReader r = new StreamReader(fileName))
     {
         var       json = r.ReadToEnd();
         LearnData deserializedSettings = JsonConvert.DeserializeObject <LearnData>(json);
         return(deserializedSettings);
     }
 }
示例#5
0
    public bool IsExist(LearnData learnData)
    {
        var select = _queryService
                     .CreateMySqlFactory()
                     .FromTable(TableName)
                     .Where("message", learnData.Message)
                     .Get();

        return(select.Any());
    }
示例#6
0
        public async Task <int> Save(LearnData learnData)
        {
            var insert = await new Query(TableName)
                         .ExecForMysql(true)
                         .InsertAsync(new Dictionary <string, object>()
            {
                { "label", learnData.Label },
                { "message", learnData.Message },
                { "from_id", _message.From.Id },
                { "chat_id", _message.Chat.Id }
            }).ConfigureAwait(false);

            Log.Information($"Save Learn: {insert}");

            return(insert);
        }
示例#7
0
    public async Task <int> Save(LearnData learnData)
    {
        var insert = await _queryService
                     .CreateMySqlFactory()
                     .FromTable(TableName)
                     .InsertAsync(new Dictionary <string, object>()
        {
            { "label", learnData.Label },
            { "message", learnData.Message },
            { "from_id", learnData.FromId },
            { "chat_id", learnData.ChatId }
        });

        Log.Information("Save Learn: {Insert}", insert);

        return(insert);
    }
示例#8
0
    public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args)
    {
        await _telegramService.AddUpdateContext(context);

        var message = _telegramService.Message;

        if (!_telegramService.IsFromSudo)
        {
            Log.Information("This user is not sudoer");
            return;
        }

        if (message.ReplyToMessage != null)
        {
            var repMessage = message.ReplyToMessage;
            var repText    = repMessage.Text ?? repMessage.Caption;
            var param      = message.Text.SplitText(" ").ToArray();
            var mark       = param.ValueOfIndex(1);
            var opts       = new List <string>
            {
                "spam", "ham"
            };

            if (!opts.Contains(mark))
            {
                await _telegramService.SendTextMessageAsync("Spesifikasikan spam atau ham (bukan spam)");

                return;
            }

            await _telegramService.SendTextMessageAsync("Sedang memperlajari pesan");

            var learnData = new LearnData
            {
                Message = repText.Replace("\n", " "),
                Label   = mark,
                ChatId  = _telegramService.ChatId,
                FromId  = _telegramService.FromId
            };

            if (_learningService.IsExist(learnData))
            {
                Log.Information("This message has learned");
                await _telegramService.EditMessageTextAsync("Pesan ini mungkin sudah di tambahkan.");

                return;
            }

            await _learningService.Save(learnData);

            await _telegramService.EditMessageTextAsync("Memperbarui local dataset");

            await _telegramService.EditMessageTextAsync("Sedang mempelajari dataset");

            await MachineLearning.SetupEngineAsync();

            await _telegramService.EditMessageTextAsync("Pesan berhasil di tambahkan ke Dataset");
        }
        else
        {
            await _telegramService.SendTextMessageAsync("Sedang mempelajari dataset");

            await MachineLearning.SetupEngineAsync();

            await _telegramService.EditMessageTextAsync("Training selesai");
        }
    }
        public override async Task HandleAsync(IUpdateContext context, UpdateDelegate next, string[] args,
                                               CancellationToken cancellationToken)
        {
            _telegramService = new TelegramService(context);

            var message = _telegramService.Message;

            _learningService = new LearningService(message);

            if (!_telegramService.IsSudoer())
            {
                Log.Information("This user is not sudoer");
                return;
            }

            if (message.ReplyToMessage != null)
            {
                var repMessage = message.ReplyToMessage;
                var repText    = repMessage.Text ?? repMessage.Caption;
                var param      = message.Text.SplitText(" ").ToArray();
                var mark       = param.ValueOfIndex(1);
                var opts       = new List <string>()
                {
                    "spam", "ham"
                };

                if (!opts.Contains(mark))
                {
                    await _telegramService.SendTextAsync("Spesifikasikan spam atau ham (bukan spam)")
                    .ConfigureAwait(false);

                    return;
                }

                await _telegramService.SendTextAsync("Sedang memperlajari pesan")
                .ConfigureAwait(false);

                var learnData = new LearnData()
                {
                    Message = repText.Replace("\n", " "),
                    Label   = mark
                };

                if (LearningService.IsExist(learnData))
                {
                    Log.Information("This message has learned");
                    await _telegramService.EditAsync("Pesan ini mungkin sudah di tambahkan.")
                    .ConfigureAwait(false);

                    return;
                }

                await _learningService.Save(learnData).ConfigureAwait(false);

                await _telegramService.EditAsync("Memperbarui local dataset")
                .ConfigureAwait(false);

                // MachineLearning.WriteToCsv();

                await _telegramService.EditAsync("Sedang mempelajari dataset")
                .ConfigureAwait(false);

                await MachineLearning.SetupEngineAsync().ConfigureAwait(false);

                // BackgroundJob.Enqueue(() => LearningHelper.SetupEngine());

                await _telegramService.EditAsync("Pesan berhasil di tambahkan ke Dataset")
                .ConfigureAwait(false);

                return;
            }
            else
            {
                await _telegramService.SendTextAsync("Sedang mempelajari dataset")
                .ConfigureAwait(false);

                await MachineLearning.SetupEngineAsync()
                .ConfigureAwait(false);

                await _telegramService.EditAsync("Training selesai")
                .ConfigureAwait(false);

                return;
            }

            await _telegramService.SendTextAsync("Balas pesan yang ingin di pelajari")
            .ConfigureAwait(false);
        }