示例#1
0
        private async void SetEnterNewTextState(MessageEventArgs e)
        {
            var userId = e.Message.From.Id;
            var block  = GetBlockChoice(userId);
            var text   =
                $"{Texts.PersonalAccount.YouWantToChange} *{e.Message.Text}* {Environment.NewLine}";
            var currentText = Texts.GetText(block, e.Message.Text);

            if (string.IsNullOrEmpty(currentText))
            {
                text = $"{Emoji.Error} Такого текста не существует.";
                await TBot.SendTextMessageAsync(userId, text);

                SetChooseTextState(e);
            }
            else
            {
                await TBot.SendTextMessageAsync(userId, text, Telegram.Bot.Types.Enums.ParseMode.Markdown);

                text = Texts.PersonalAccount.EnterNewText;
                var keyboard = Keyboards.PersonalAccount.EnterNewTextKeyboard;
                await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

                SetState(userId, State.EnterNewText);
            }
        }
示例#2
0
        List <ICommand> MoveToPosition(TBot bot, int x, int y, int z)
        {
            var res = new List <ICommand>();

            while (bot.Coord.X != x && bot.Coord.Y != y && bot.Coord.Z != z)
            {
                if (bot.Coord.X != x)
                {
                    var dx = x - bot.Coord.X;
                    bot.Coord.X += dx % Constants.StraightMoveCorrection;
                    StraightMove smove = new StraightMove();
                    smove.Diff = new CoordDiff(dx, 0, 0);
                    res.Add(smove);
                }
                if (bot.Coord.Y != y)
                {
                    var dy = y - bot.Coord.Y;
                    bot.Coord.Y += dy % Constants.StraightMoveCorrection;
                    StraightMove smove = new StraightMove();
                    smove.Diff = new CoordDiff(0, dy, 0);
                    res.Add(smove);
                }
                if (bot.Coord.Z != z)
                {
                    var dz = z - bot.Coord.Z;
                    bot.Coord.Z += dz % Constants.StraightMoveCorrection;
                    StraightMove smove = new StraightMove();
                    smove.Diff = new CoordDiff(0, 0, dz);
                    res.Add(smove);
                }
            }

            return(res);
        }
示例#3
0
        public TState(TModel model, bool enableValidation = false)
        {
            Model            = model;
            EnableValidation = enableValidation;
            Matrix           = new int[Model.R, Model.R, Model.R];

            var bot = new TBot
            {
                Bid   = 1,
                Coord =
                {
                    X = 0,
                    Y = 0,
                    Z = 0
                }
            };

            for (var i = 2; i <= 40; ++i)
            {
                bot.Seeds.Add(i);
            }

            Bots.Add(bot);

            Energy    = 0;
            Harmonics = EHarmonics.Low;
        }
示例#4
0
        private async void SetGreetingState(int userId)
        {
            var text     = Texts.Lamagna.Greeting;
            var keyboard = BotController.IsOwner(userId, TBot) ? Keyboards.Lamagna.ExtendedGreetingKeyboard : Keyboards.Lamagna.GreetingKeyboard;
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.Greeting);
        }
示例#5
0
        private async void SetGetEmailState(MessageEventArgs e)
        {
            int userId = e.Message.From.Id;
            var text   = Texts.GetEmailAddress;
            await TBot.SendTextMessageAsync(userId, text);

            SetState(userId, State.GetEmailAddress);
        }
示例#6
0
        private async void SetGetTokenState(MessageEventArgs e)
        {
            int userId = e.Message.From.Id;
            var text   = Texts.GetBotToken;
            await TBot.SendTextMessageAsync(userId, text);

            SetState(userId, State.GetBotToken);
        }
示例#7
0
        private async void SetChooseBlockState(MessageEventArgs e)
        {
            var userId   = e.Message.From.Id;
            var text     = Texts.PersonalAccount.ChooseBlock;
            var keyboard = Keyboards.PersonalAccount.ChooseBlockKeyboard;
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.ChooseBlockToEdit);
        }
示例#8
0
        private async void SetChooseSettingsState(MessageEventArgs e)
        {
            var userId   = e.Message.From.Id;
            var text     = Texts.PersonalAccount.PersnonalAccountGreeting(e.Message.From.FirstName);
            var keyboard = Keyboards.PersonalAccount.ChooseSettingKeyboard;
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.ChooseSettings);
        }
示例#9
0
        private async void SetGetPhoneNumberState(MessageEventArgs e)
        {
            int userId   = e.Message.From.Id;
            var text     = Texts.GetPhoneNumber;
            var keyboard = Keyboards.GetPhoneNumberKeyboard;
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.GetPhoneNumber);
        }
示例#10
0
        private async void SetChooseTextState(MessageEventArgs e)
        {
            var userId      = e.Message.From.Id;
            var text        = Texts.PersonalAccount.ChooseText;
            var blockChoice = GetBlockChoice(userId).ToString();
            var keyboard    = Keyboards.PersonalAccount.ChooseTextKeyboard(blockChoice);
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.ChooseTextToEdit);
        }
示例#11
0
        private async void SetLamagna4State(CallbackQueryEventArgs e)
        {
            var userId   = e.CallbackQuery.From.Id;
            var text     = Texts.Lamagna.Text4;
            var keyboard = Keyboards.Lamagna.Text4Keyboard;
            await TBot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, "");

            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.Lamagna4);
        }
示例#12
0
        private async void SetContactsState(CallbackQueryEventArgs e)
        {
            var userId   = e.CallbackQuery.From.Id;
            var text     = Texts.Other.Contacts;
            var keyboard = Keyboards.MainProduct.ContactsKeyboard;
            await TBot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, "");

            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.Contacts);
        }
示例#13
0
        private async void SetTrippier3State(CallbackQueryEventArgs e)
        {
            var userId   = e.CallbackQuery.From.Id;
            var text     = Texts.Trippier.Text3;
            var keyboard = Keyboards.Trippier.Text3Keyboard;
            await TBot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, "");

            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.Trippier3);
        }
示例#14
0
        List <ICommand> FillLayer(TBot bot, int[][] layer, int[][] previousLayer)
        {
//            int[] histogram = GetLayerHistogram(layer);
            List <int>[]    layerSegmentsMap = GetLayerSegmentsMap(layer);
            List <ICommand> res = new List <ICommand>();

            for (int i = 0; i < layerSegmentsMap.Length; ++i)
            {
                res.AddRange(GenerateCommandsForSegment(bot, i, layerSegmentsMap[i], (i % 2 == 0) ? 1 : -1));
            }

            return(res);
        }
示例#15
0
        private async void UpdateText(MessageEventArgs e)
        {
            int userId    = e.Message.From.Id;
            var block     = GetBlockChoice(userId);
            var fieldName = GetTextChoice(userId);

            Texts.Update(block, fieldName, e.Message.Text);

            string text = Texts.PersonalAccount.NewTextSaved;
            await TBot.SendTextMessageAsync(userId, text);

            SetChooseTextState(e);
        }
示例#16
0
            public void Update(TCoord coord, TBot bot)
            {
                if (Coords == null)
                {
                    return;
                }

                if (Coords.Contains(coord))
                {
                    throw new InvalidStateException($"bot {bot.Bid} interferes with other bots at {coord}");
                }

                Coords.Add(coord);
            }
示例#17
0
        private void ShowMainProductPassedUsers(MessageEventArgs e)
        {
            var newMessage = $"Пользователи бота {BotUsername}, прошедшие блок Главный продукт:{Environment.NewLine}";

            using (var db = DBHelper.GetConnection(BotUsername))
            {
                var users = db.Table <BotUser>().Where(u => u.MainProductPassed);
                foreach (var user in users)
                {
                    newMessage += $"{Environment.NewLine}{user.ToString()}";
                }
            }
            TBot.SendTextMessageAsync(e.Message.From.Id, newMessage);
            SetChooseStatisticsState(e);
        }
示例#18
0
        private void ShowAllUsers(MessageEventArgs e)
        {
            var newMessage = $"Пользователи бота {BotUsername}:{Environment.NewLine}";

            using (var db = DBHelper.GetConnection(BotUsername))
            {
                var users = db.Table <BotUser>().ToList();
                foreach (var user in users)
                {
                    newMessage += $"{Environment.NewLine}{user.ToString()}";
                }
            }
            TBot.SendTextMessageAsync(e.Message.From.Id, newMessage);
            SetChooseStatisticsState(e);
        }
示例#19
0
        private async void SetCheckContactDataState(MessageEventArgs e)
        {
            int    userId = e.Message.From.Id;
            Client client = null;

            using (var db = DBHelper.GetConnection())
            {
                client = db.Find <Client>(userId);
            }

            var text     = Texts.GetCheckContactDataText(client);
            var keyboard = Keyboards.CheckContactDataKeyboard;
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.CheckContactData);
        }
示例#20
0
 public MainWindow()
 {
     using(BotStartForm bsf = new BotStartForm())
     {
         if(bsf.ShowDialog() != System.Windows.Forms.DialogResult.OK)
         {
             Environment.Exit(0);
             return;
         }
         _bot = bsf.Bot;
     }
     InitializeComponent();
     _bot.OnMessageRead += _bot_OnMessageRead;
     _bot.OnDisconnect += _bot_OnDisconnect;
     _bot.OnConnect += _bot_OnConnect;
     _bot.Start();
 }
示例#21
0
        static void Main(string[] args)
        {
            var logger = new ConsoleLogger();

            var options = new Options();

            Parser.Default.ParseArguments <Options>(args).WithParsed <Options>(opt =>
            {
                options = opt;
            });

            if (string.IsNullOrEmpty(options.Token))
            {
                options.Token = Path.Combine(Environment.CurrentDirectory, "token.txt");
            }

            if (string.IsNullOrEmpty(options.WhiteListPath))
            {
                options.WhiteListPath = Path.Combine(Environment.CurrentDirectory, "white.txt");
            }

            var token = string.Empty;

            if (File.Exists(options.Token))
            {
                token = File.ReadAllText(options.Token, Encoding.UTF8);
            }
            else
            {
                token = options.Token;
            }

            string[] userWhiteList = new string[0];

            if (File.Exists(options.WhiteListPath))
            {
                userWhiteList = File.ReadAllLines(options.WhiteListPath);
            }

            var tBot = new TBot(token, logger, userWhiteList);

            tBot.BotStop += TBot_BotStop;
            tBot.StartAsync();

            Console.ReadKey();
        }
示例#22
0
        private async void SetStartState(MessageEventArgs e)
        {
            int userId = e.Message.From.Id;

            if (DBHelper.IsClient(e.Message.From))
            {
                await TBot.SendTextMessageAsync(userId, Texts.KnownClientGreeting);

                SetCheckContactDataState(e);
            }
            else
            {
                var text     = Texts.UnknownClientGreeting(e.Message.From);
                var keyboard = Keyboards.UnknownClientGreetingKeyboard;
                await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

                SetState(userId, State.UnknownClientGreeting);
            }
        }
示例#23
0
        private bool disposedValue = false; // To detect redundant calls

        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    // TODO: dispose managed state (managed objects).
                }

                // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below.
                // TODO: set large fields to null.
                BacktestResultConfig = null;
                Config      = null;
                tBot        = null;
                TBotJObject = null;

                disposedValue = true;
            }
        }
示例#24
0
        List <ICommand> GenerateCommandsForSegment(TBot bot, int lineIndex, List <int> segmentsMapRaw, int direction)
        {
            List <int> segmentsMap = new List <int>(segmentsMapRaw);

            if (direction < 0)
            {
                segmentsMap.Reverse();
            }

            List <Tuple <TCoord, CoordDiff> > cuts = GenerateCuts(lineIndex, segmentsMapRaw, direction);

            var botOffset = new CoordDiff(0, 1, 0);

            var res = new List <ICommand>();

            foreach (var cut in cuts)
            {
                res.AddRange(MoveToPosition(bot, cut.Item1));
                res.AddRange(FillLine(bot, cut.Item2, botOffset));
            }
            return(res);
        }
示例#25
0
        private void MoveBot(TBot bot, CoordDiff diff, Volatiles volatiles)
        {
            if (EnableValidation)
            {
                var miniDiff = new CoordDiff(Math.Sign(diff.Dx), Math.Sign(diff.Dy), Math.Sign(diff.Dz));
                var current  = bot.Coord;
                var end      = bot.Coord;
                end.Apply(diff);
                while (!current.Equals(end))
                {
                    volatiles.Update(current, bot);
                    current.Apply(miniDiff);
                    if (this[current])
                    {
                        throw new InvalidStateException($"Coord {current} is occupied when moving bot {bot.Bid}");
                    }
                }

                volatiles.Update(end, bot);
            }

            bot.Coord.Apply(diff);
        }
示例#26
0
 private void button1_Click(object sender, EventArgs e)
 {
     _bot = new TBot(textBox1.Text, textBox2.Text, textBox3.Text);
     this.DialogResult = System.Windows.Forms.DialogResult.OK;
 }
示例#27
0
 private void BotStartForm_Load(object sender, EventArgs e)
 {
     _bot = new TBot("BahNahNahBot", "oauth:68g2aewlvaon4i99ze354odf99keti", "BahNahNah");
     this.DialogResult = System.Windows.Forms.DialogResult.OK;
 }
示例#28
0
        private IBot _AddBot(BotMode mode, BacktestResultHandle backtestResultHandle = null, IAccount account = null, BacktestResult backtestResult = null, PBot pBot = null, TBot tBot = null, IBot bot = null)
        {
            if (account == null)
            {
                throw new ArgumentNullException(nameof(account));
            }

            if (backtestResult == null)
            {
                backtestResult = backtestResultHandle?.Object;
            }

            if (bot == null)
            {
                if (pBot != null)
                {
                    bot = (IBot)pBot.Instantiate();
                }
                else
                {
                    if (tBot == null)
                    {
                        tBot = backtestResult.TBot;
                        //if (backtestResult == null) { backtestResult = backtestResultHandle?.Object; }

                        //var templateType = ResolveType(backtestResult.BotConfigType);
                        ////var templateType = Type.GetType(result.BotConfigType);
                        //if (templateType == null)
                        //{
                        //    throw new NotSupportedException($"Bot type not supported: {backtestResult.BotConfigType}");
                        //}

                        //tBot = (TBot)((JObject)backtestResult.Config).ToObject(templateType);
                    }

                    if (tBot == null)
                    {
                        throw new ArgumentNullException(nameof(tBot));
                    }

                    bot = (IBot)tBot.Create();
                }
            }

            //bot.Modes = mode | BotMode.Paper;
            //var botVM = new BotVM() { Bot = bot };
            //botVM.State = SupervisorBotState.Scanner;

            if (bot.Modes.HasFlag(BotMode.Live))
            {
                throw new Exception("Not ready for live yet");
            }
            bot.Account = account;
            //botVM.AddBacktestResult(backtestResult);

            //bool hasPaper = mode.HasFlag(BotMode.Paper);
            //if (mode != BotMode.Paper)
            //{
            //    mode = mode & ~BotMode.Paper;
            //}

            //if (mode.HasFlag(BotMode.Live)) { LiveBots.Add(bot); Template.LiveBots.Add(tBot.Id); }
            //if (mode.HasFlag(BotMode.Demo)) { DemoBots.Add(bot); Template.DemoBots.Add(tBot.Id); }
            //if (mode.HasFlag(BotMode.Scanner)) { Scanners.Add(bot); Template.Scanners.Add(tBot.Id); }
            //if (mode.HasFlag(BotMode.Paper)) { PaperBots.Add(bot); Template.PaperBots.Add(tBot.Id); }

            //if (mode.HasFlag(BotMode.Live)) { if (LiveBots == null) { LiveBots = new ObservableCollection<IBot>(); } LiveBots.Add(bot); }
            //if (mode.HasFlag(BotMode.Demo)) { if (DemoBots == null) { DemoBots = new ObservableCollection<IBot>(); } DemoBots.Add(bot); }

            if (Bots == null)
            {
                Bots = new ObservableCollection <IBot>();
            }

            if (!BotIds.Contains(bot.Template.Id))
            {
                BotIds.Add(bot.Template.Id);
                Bots.Add(bot);
            }

            //if (mode.HasFlag(BotMode.Paper)) { if (PaperBots==null) { PaperBots = new ObservableCollection<IBot>(); } PaperBots.Add(bot); }

            //if (pBot != null)
            //{
            //    bot.DesiredExecutionState = pBot.DesiredExecutionState;
            //}

            //switch (mode)
            //{
            //    case BotMode.Live:
            //        LiveBots.Add(bot);
            //        break;
            //    case BotMode.Demo:
            //        DemoBots.Add(bot);
            //        break;
            //    case BotMode.Scanner:
            //        Scanners.Add(bot);
            //        break;
            //    case BotMode.Paper:

            //        break;
            //    default:
            //        throw new ArgumentException(nameof(mode));
            //}

            //if (mode.HasFlag(BotMode.Scanner))
            //{
            //    Scanners.Add(bot);
            //}
            //if (mode.HasFlag(BotMode.Live))
            //{
            //    LiveBots.Add(bot);
            //}
            //if (mode.HasFlag(BotMode.Demo))
            //{
            //    DemoBots.Add(bot);
            //}
            //if (mode.HasFlag(BotMode.Paper))
            //{
            //    PaperBots.Add(bot);
            //}

            //Task.Factory.StartNew(() => bot.Start());
            return(bot);
        }
示例#29
0
        private IBot _AddBotForMode(BotMode mode, BacktestResult backtestResult = null, PBot pBot = null, TBot tBot = null, IBot bot = null)
        {
            IAccount account;

            switch (mode)
            {
            case BotMode.Live:
                account = LiveAccount;
                break;

            case BotMode.Demo:
                account = DemoAccount;
                break;

            case BotMode.Scanner:
                account = ScannerAccount;
                break;

            case BotMode.Paper:
                account = PaperAccount;
                break;

            default:
                throw new ArgumentException(nameof(mode) + " unknown or is set to more than one mode.");
            }
            if (account == null)
            {
                Debug.WriteLine($"WARNING - _AddBotForMode({mode}) assigned no account");
            }
            return(_AddBot(mode, account: account, backtestResult: backtestResult, pBot: pBot, tBot: tBot, bot: bot));
        }
示例#30
0
        static void Main(string[] args)
        {
            TBot bot = new TBot();

            bot.Run();
        }
示例#31
0
        public async override void Next(MessageEventArgs e)
        {
            var    userId  = e.Message.From.Id;
            string btnText = e.Message.Text;
            var    state   = GetUserState(userId);

            switch (state)
            {
            case State.UnknownClientGreeting:
            {
                if (btnText == Texts.LetsButton)
                {
                    SetGetPhoneNumberState(e);
                }
                break;
            }

            case State.CheckContactData:
            {
                if (btnText == Texts.PhoneNumberChangedButton)
                {
                    SetGetPhoneNumberState(e);
                }
                else if (btnText == Texts.EmailAddressChangedButton)
                {
                    SetGetEmailState(e);
                }
                else if (btnText == Texts.ItsAnActualDataButton)
                {
                    SetGetTokenState(e);
                }
                break;
            }

            case State.GetPhoneNumber:
            {
                if (e.Message.Type == Telegram.Bot.Types.Enums.MessageType.ContactMessage)
                {
                    var contact = e.Message.Contact;
                    if (contact.UserId == userId)
                    {
                        SavePhoneNumber(e);
                        await TBot.SendTextMessageAsync(userId, Texts.PhoneNumberSaved);

                        if (DBHelper.IsClient(e.Message.From))
                        {
                            SetCheckContactDataState(e);
                        }
                        else
                        {
                            SetGetEmailState(e);
                        }
                    }
                    else
                    {
                        await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Нет, нам нужен ВАШ номер.");
                    }
                }
                else
                {
                    await TBot.SendTextMessageAsync(userId, "Нажмите на кнопку внизу, чтобы отправить свой номер.");
                }
                break;
            }

            case State.GetEmailAddress:
            {
                if (FormatHelper.IsEmailAddress(e.Message.Text))
                {
                    SaveEmailAddress(e);
                    await TBot.SendTextMessageAsync(userId, Texts.EmailSaved);

                    if (DBHelper.IsClient(userId))
                    {
                        SetCheckContactDataState(e);
                    }
                    else
                    {
                        SaveNewClient(userId);
                        SetGetTokenState(e);
                    }
                }
                else
                {
                    await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Это не адрес электронный почты.");
                }
                break;
            }

            case State.GetBotToken:
            {
                string token = e.Message.Text;
                if (TokenIsValid(token))
                {
                    OurBot existedBot = null;
                    using (var db = DBHelper.GetConnection())
                    {
                        existedBot = db.Table <OurBot>().FirstOrDefault(b => b.Token == token);
                    }
                    if (existedBot != null)
                    {
                        var tBotName = new TelegramBotClient(token).GetMeAsync().Result.Username;
                        await TBot.SendTextMessageAsync(userId, $"Данный токен уже используется в Вашем персональном помощнике @{tBotName}");
                    }
                    else
                    {
                        BotController.RegisterNewBot(e.Message.Text, userId, nameof(Scheme1));
                        await TBot.SendTextMessageAsync(userId, $"Поздравляем");
                    }
                }
                else
                {
                    await TBot.SendTextMessageAsync(userId, "Неверный токен");

                    SetGetTokenState(e);
                }
                break;
            }
            }
        }
示例#32
0
 void _bot_OnDisconnect(TBot sender, Exception ex)
 {
     MessageBox.Show("Lost connection! \n " + ex.ToString());
     Environment.Exit(0);
     return;
 }
示例#33
0
        void _bot_OnMessageRead(TBot sender, TBotMessage message, string raw)
        {
            Chatlog.AppendText(string.Format("<{0}> {1}\n", message.Username, message.Text));
            TBotCommand command = null;
            foreach(ListViewItem i in commandList.Items)
            {
                TBotCommand _tCom = (TBotCommand)i.Tag;

                string msgCompare = message.Text;
                string msgCompareSplit = message.Text;
                if (msgCompare.Contains(" "))
                    msgCompareSplit = msgCompare.Split(' ')[0];
                if (!_tCom.FlagCaseSensitive)
                    msgCompare = msgCompare.ToLower();
                if (_tCom.FlagIsRegex)
                {
                    if (Regex.Match(msgCompare, _tCom.Flag).Success)
                        command = _tCom;
                }
                else
                {
                    switch(_tCom.Paramiters)
                    {
                        case ParamiterType.HasParamiters:
                            if (i.Text.ToLower() == msgCompare)
                                command = _tCom;
                            break;
                        case ParamiterType.NoParamiters:
                            if (i.Text.ToLower() == msgCompareSplit)
                                command = _tCom;
                            break;
                        default:
                            if (i.Text.ToLower() == msgCompareSplit || i.Text.ToLower() == msgCompare)
                                command = _tCom;
                            break;
                    }
                }
                if (command != null)
                    break;
            }
            if (command != null)
                ExecuteCommand(command, message);
            CheckBlacklist(message);
        }
示例#34
0
                public static async Task <Services.Bot.FSM <TBot> > Get(Update update, CancellationToken token)
                {
                    if (state.TryGetValue(update.Message.Chat.Id, out Services.Bot.FSM <TBot> fsm))
                    {
                        return(fsm);
                    }
                    else
                    {
                        if (TextMessage.defaultClient != null && TextMessage.defaultClient.BotId.HasValue)
                        {
                            var temp = await dBWorker.GetChat(update.Message.Chat.Id, token, TextMessage.defaultClient.BotId.Value);

                            if (temp == null)
                            {
                                temp = new TBot()
                                {
                                    Id = update.Message.Chat.Id
                                };
                            }

                            if (update.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Private)
                            {
                                temp.Username = update.Message.From.Username;
                                temp.Name     = update.Message.From.FirstName;
                                temp.userType = Enums.UserType.User;
                            }
                            else if (update.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Group || update.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Supergroup && update.Message.From.Id != 777000)
                            {
                                try
                                {
                                    temp.Username = update.Message.Chat.Username;
                                    temp.Name     = update.Message.Chat.FirstName;
                                    temp.userType = Enums.UserType.Group;
                                    //await dBWorker.SaveChat(temp, token, TextMessage.defaultClient.BotId.Value);
                                    //var temp2 = await dBWorker.GetChat(update.Message.From.Id, token, TextMessage.defaultClient.BotId.Value);
                                    //if (temp2 == null)
                                    //{
                                    //    temp2 = new TBot() { Id = update.Message.From.Id };
                                    //    temp2.Username = update.Message.From.Username;
                                    //    temp2.Name = update.Message.From.FirstName;
                                    //    temp2.userType = Enums.UserType.User;
                                    //    temp2.Status = Enums.UserStatus.common;
                                    //}
                                    //else
                                    //{
                                    //    temp2.Username = update.Message.From.Username;
                                    //    temp2.Name = update.Message.From.FirstName;
                                    //    temp2.userType = Enums.UserType.User;
                                    //}
                                    //await dBWorker.SaveChat(temp2, token, TextMessage.defaultClient.BotId.Value);
                                }
                                catch (Exception ex)
                                {
                                }
                            }

                            await dBWorker.SaveChat(temp, token, TextMessage.defaultClient.BotId.Value);

                            FSM <TBot> fSM = new FSM <TBot>(update.Message.Chat.Id, temp);
                            state.TryAdd(update.Message.Chat.Id, fSM);
                            return(fSM);
                        }
                        return(null);
                    }
                }
示例#35
0
        public async override void Next(MessageEventArgs e)
        {
            var    userId  = e.Message.From.Id;
            string btnText = e.Message.Text;
            var    state   = GetUserState(userId);

            if (btnText == Texts.ToStartButton)
            {
                SetGreetingState(e.Message.From.Id);
            }
            else
            {
                switch (state)
                {
                case State.ChooseSettings:
                {
                    if (btnText == Texts.PersonalAccount.StatisticsButton)
                    {
                        SetChooseStatisticsState(e);
                    }
                    else if (btnText == Texts.PersonalAccount.TextsEditingButton)
                    {
                        SetChooseBlockState(e);
                    }
                    else if (btnText == Texts.BackButton)
                    {
                        SetGreetingState(e.Message.From.Id);
                    }
                    break;
                }

                case State.ChooseStatistics:
                {
                    if (btnText == Texts.PersonalAccount.AllUsersButton)
                    {
                        ShowAllUsers(e);
                    }
                    else if (btnText == Texts.PersonalAccount.LamagnaPassedUsersButton)
                    {
                        ShowLamagnaPassedUsers(e);
                    }
                    else if (btnText == Texts.PersonalAccount.TrippierPassedUsersButton)
                    {
                        ShowTrippierPassedUsers(e);
                    }
                    else if (btnText == Texts.PersonalAccount.MainProductPassedUsersButton)
                    {
                        ShowMainProductPassedUsers(e);
                    }
                    else if (btnText == Texts.BackButton)
                    {
                        SetChooseSettingsState(e);
                    }
                    break;
                }

                case State.ChooseBlockToEdit:
                {
                    if (btnText == Texts.BackButton)
                    {
                        SetChooseSettingsState(e);
                    }
                    else if (Texts.ValidBlockName(e.Message.Text))
                    {
                        SaveBlockChoice(userId, e.Message.Text);
                        SetChooseTextState(e);
                    }
                    else
                    {
                        await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Нет такого блока.");

                        SetChooseBlockState(e);
                    }
                    break;
                }

                case State.ChooseTextToEdit:
                {
                    if (btnText == Texts.BackButton)
                    {
                        SetChooseBlockState(e);
                    }
                    else
                    {
                        SaveTextChoice(userId, e.Message.Text);
                        SetEnterNewTextState(e);
                    }
                    break;
                }

                case State.EnterNewText:
                {
                    if (btnText == Texts.BackButton)
                    {
                        SetChooseTextState(e);
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(btnText))
                        {
                            await TBot.SendTextMessageAsync(userId, "Молчание не привлечёт к вам клиентов!");

                            SetChooseTextState(e);
                        }
                        UpdateText(e);
                    }
                    break;
                }
                }
            }
        }
示例#36
0
 void _bot_OnConnect(TBot sender, bool success)
 {
     if (success)
     {
         MessageBox.Show("Connected");
     }
     else
     {
         MessageBox.Show("Failed to connect");
         Environment.Exit(0);
         return;
     }
 }