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); }
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); } }
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); } } }
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; }
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( ); }
/// <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); } } }
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); }
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); } }
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; } }
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); }
public abstract void Execute(Message message, TeleBot bot);
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); } } } } } }
/// <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); }