Exemplo n.º 1
0
        public override async void Execute(Message message, TeleBot bot)
        {
            var chatId    = message.Chat.Id;
            var messageId = message.MessageId;

            await bot.Client.SendTextMessageAsync(chatId, "", replyToMessageId : messageId);
        }
Exemplo n.º 2
0
        private void UpdateLatest(TeleBot bot, TelegramSubscription subscription)
        {
            try
            {
                foreach (var coinId in subscription.LastSignificantPrice.Keys)
                {
                    var latest = bot.Ctb.Exchanges[subscription.ExchangeId][coinId]?.Clone( );

                    while (latest?.Average == 0)
                    {
                        latest = bot.Ctb.Exchanges[subscription.ExchangeId][coinId]?.Clone( );
                    }

                    if (latest != null)
                    {
                        PriceChanges[coinId.ToString( )] = latest - subscription.LastSignificantPrice[coinId];
                    }
                    else
                    {
                        PriceChanges[coinId.ToString( )] = null;
                    }

                    CurrentPrice[coinId.ToString( )] = latest;
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
Exemplo n.º 3
0
        private void sendBasicResponse(Activity activity)
        {
            ApplicationUser curUser   = getUserFromActivity(activity);
            var             connector = new ConnectorClient(new Uri(activity.ServiceUrl));

            if (curUser != null)
            {
                Activity reply = activity.CreateReply("Simpler Text");
                TeleBot  tb    = new TeleBot();
                string   text  = "Simple text";

                //reply.ChannelData = new TelegramChannelData()
                //{
                //    method = "sendMessage",
                //    parameters = new TelegramParameters()
                //    {
                //        text = text
                //    }
                //};

                try
                {
                    connector.Conversations.ReplyToActivity(reply);
                }
                catch (Exception ex)
                {
                    logM.Error("Inner problem of simpler Telegram test.", ex);
                }
            }
        }
Exemplo n.º 4
0
        public static void Main( )
        {
            Console.Title = "Crypto Ticker Telegram Bot";
            var ctb = new Bot( );

            ctb.Start( );
            var teleBot = new TeleBot(Settings.Instance.BotToken, ctb);

            teleBot.Start( );
        }
        public TeleBotWebSocketService(TeleBot bot) : base(bot.Ctb)
        {
            Bot = bot;

            AvailableCommands["GetExchangeStatuses"]     = GetExchangeStatusesCommand;
            AvailableCommands["GetTeleSubscriptionList"] = GetTeleSubscriptionListCommand;
            AvailableCommands["GetTeleSubscription"]     = GetTeleSubscriptionCommand;

            AvailableSubscriptions["TeleSubscriptionUpdates"] = SubscribeToTeleSubscriptionUpdates;
        }
Exemplo n.º 6
0
        public static void Main( )
        {
            AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
                                                          Logger.Error(args);

            LogManager.Configuration.Variables["DataSource"] =
                CryptoTickerBot.Data.Settings.Instance.DataSource;

            Console.Title = "Crypto Ticker Telegram Bot";

            var ctb = CryptoTickerBotCore.CreateAndStart( );

            StartGoogleSheetUpdater(ctb);

            var teleBot = new TeleBot(Settings.Instance.BotToken, ctb);

            teleBot.Start( );
            teleBot.Restart += bot => StartGoogleSheetUpdater(bot.Ctb);

            Console.ReadLine( );
        }
Exemplo n.º 7
0
        /// <summary>
        /// Download a file as a byte array async using a GetFileResponse.
        /// </summary>
        public static async Task <byte[]> DownloadFileAsync(this TeleBot bot, GetFileResponse getFileResponse)
        {
            bot.Log.Info(nameof(DownloadFileAsync));

            if (string.IsNullOrEmpty(getFileResponse?.Result?.FilePath))
            {
                return(null);
            }

            using (var client = new WebClient())
            {
                try
                {
                    return(await client.DownloadDataTaskAsync($"{TeleBot.ApiUrl}/file/bot{bot.ApiToken}/{getFileResponse.Result.FilePath}"));
                }
                catch
                {
                    return(null);
                }
            }
        }
Exemplo n.º 8
0
        public TeleBotSubscriptionSummary(TeleBot bot, int subscriptionId)
        {
            var subscription = bot.Subscriptions.FirstOrDefault(x => x.Id == subscriptionId);

            if (subscription == null)
            {
                return;
            }

            Id                   = subscription.Id;
            ChatId               = subscription.ChatId;
            UserName             = subscription.UserName;
            Exchange             = subscription.ExchangeId.ToString( );
            Threshold            = subscription.Threshold;
            LastSignificantPrice = subscription.LastSignificantPrice
                                   .ToDictionary(kp => kp.Key.ToString( ), kp => new CoinValueSummary(kp.Value));

            CurrentPrice = new Dictionary <string, CoinValueSummary> ( );
            PriceChanges = new Dictionary <string, PriceChange?> ( );

            UpdateLatest(bot, subscription);
        }
Exemplo n.º 9
0
        private void sendUserBetsTelegram(Activity activity)
        {
            ApplicationUser curUser = getUserFromActivity(activity);

            var connector = new ConnectorClient(new Uri(activity.ServiceUrl));

            if (curUser != null)
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
                Activity             reply = activity.CreateReply("");
                DateTime             curDt = DateTime.UtcNow + MvcApplication.utcMoscowShift;
                List <Bet>           bets  = getBetsByUserDay(curUser, curDt);
                TeleBot              tb    = new TeleBot();
                InlineKeyboardMarkup kb    = tb.createKeabordFromBets(bets, true);
                string jsonKb = JsonConvert.SerializeObject(kb);
                string text   = "";
                if (bets.Count > 0)
                {
                    text = "Ставки на " + curDt.ToString("dd.MM.yyyy");
                }
                else
                {
                    text = "Открытых ставок на " + curDt.ToString("dd.MM.yyyy") + " нет";
                }

                reply.ChannelData = new TelegramChannelData()
                {
                    method     = "sendMessage",
                    parameters = new TelegramParameters()
                    {
                        text         = text,
                        parse_mode   = "Markdown",
                        reply_markup = jsonKb
                    }
                };
                connector.Conversations.ReplyToActivity(reply);
            }
        }
Exemplo n.º 10
0
        private static WebSocketServer StartWebSocketServer(TeleBot teleBot)
        {
            try
            {
                var url = $"ws://{Settings.Instance.Ip}:{Settings.Instance.Port}";
                var sv  = new WebSocketServer(url);
                sv.Log.Level = LogLevel.Fatal;
                sv.AddWebSocketService(
                    "/telebot",
                    () => new TeleBotWebSocketService(teleBot)
                    );
                sv.Start( );

                Logger.Info($"WebSocket Server started on {url}");

                return(sv);
            }
            catch (Exception e)
            {
                Logger.Error(e);
                throw;
            }
        }
Exemplo n.º 11
0
        private void basicTelegramReminder(ConversationStarter cs)
        {
            ApplicationUser curUser = cs.ApplicationUser;


            var userAccount = new ChannelAccount(cs.ToId, cs.ToName);
            var botAccount  = new ChannelAccount(cs.FromId, cs.FromName);
            var connector   = new ConnectorClient(new Uri(cs.ServiceUrl));

            Activity activity = new Activity();

            activity.Type         = ActivityTypes.Message;
            activity.From         = botAccount;
            activity.Recipient    = userAccount;
            activity.Conversation = new ConversationAccount(id: cs.ConversationId);
            activity.Id           = "1";
            string text = "Нужно сделать ставки!";

            DateTime             curDate = (DateTime.UtcNow + MvcApplication.utcMoscowShift).Date;
            List <Bet>           bets    = db.Bets.Where(b => b.ApplicationUser.UserName == curUser.UserName & b.Program.TvDate == curDate & !b.IsLocked).ToList();
            TeleBot              tb      = new TeleBot();
            InlineKeyboardMarkup kb      = tb.createKeabordFromBets(bets, true);
            string jsonKb = JsonConvert.SerializeObject(kb);

            activity.ChannelData = new TelegramChannelData()
            {
                method     = "sendMessage",
                parameters = new TelegramParameters()
                {
                    text         = text,
                    parse_mode   = "Markdown",
                    reply_markup = jsonKb
                }
            };
            connector.Conversations.SendToConversation(activity);
        }
Exemplo n.º 12
0
 public abstract void Execute(Message message, TeleBot bot);
Exemplo n.º 13
0
        public void manualTeleSend(string userName, Activity mainActivity, List <Bet> allbets)
        {
            DateTime now                   = DateTime.UtcNow + MvcApplication.utcMoscowShift;
            string   allbetsstr            = "";// allbets.Count().ToString() + "; ";
            List <ConversationStarter> css = db.CSs.ToList();

            if (css.Count() > 0)
            {
                foreach (ConversationStarter cs in css)
                {
                    if (cs.ChannelId == "telegram" & cs.ApplicationUser.TelegramUserName == userName)
                    {
                        ApplicationUser curUser = cs.ApplicationUser;


                        var userAccount = new ChannelAccount(cs.ToId, cs.ToName);
                        var botAccount  = new ChannelAccount(cs.FromId, cs.FromName);

                        MicrosoftAppCredentials.TrustServiceUrl(cs.ServiceUrl, DateTime.UtcNow.AddDays(7));
                        var account   = new MicrosoftAppCredentials("ed8d437a-c850-4738-a15f-534457ad8716", "jYAUUmDx1zWwfv3L1BpmOeR");
                        var connector = new ConnectorClient(new Uri(cs.ServiceUrl), account);
                        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                        Activity activity = new Activity();
                        activity.From         = botAccount;
                        activity.Recipient    = userAccount;
                        activity.Conversation = new ConversationAccount(id: cs.ConversationId);
                        activity.Type         = ActivityTypes.Message;
                        activity.Id           = "1";

                        string  text            = "Нужно сделать ставки!";
                        TeleBot tb              = new TeleBot();
                        InlineKeyboardMarkup kb = tb.createKeabordFromBets(allbets, true);
                        string jsonKb           = JsonConvert.SerializeObject(kb);
                        activity.ChannelData = new TelegramChannelData()
                        {
                            method     = "sendMessage",
                            parameters = new TelegramParameters()
                            {
                                text         = text,
                                parse_mode   = "Markdown",
                                reply_markup = jsonKb
                            }
                        };

                        allbetsstr += activity.Recipient.Name.ToString() + "-" + activity.Recipient.Id.ToString() + ". ";
                        try
                        {
                            connector.Conversations.SendToConversation(activity);
                        }
                        catch (Exception ex)
                        {
                            if (cs.ApplicationUser.TelegramUserName == "amosendz")
                            {
                                allbetsstr = "The error is: " + ex.Message;
                                var      connector2 = new ConnectorClient(new Uri(mainActivity.ServiceUrl), account);
                                Activity reply      = mainActivity.CreateReply("");

                                reply.ChannelData = new TelegramChannelData()
                                {
                                    method     = "sendMessage",
                                    parameters = new TelegramParameters()
                                    {
                                        text = allbetsstr
                                    }
                                };
                                connector2.Conversations.ReplyToActivity(reply);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 14
0
        /// <summary>
        /// Download a file as a byte array using a GetFileResponse.
        /// </summary>
        public static byte[] DownloadFile(this TeleBot bot, GetFileResponse getFileResponse)
        {
            bot.Log.Info(nameof(DownloadFile));

            return(DownloadFileAsync(bot, getFileResponse).Result);
        }