Beispiel #1
0
 /// <summary>
 /// Creates an instance of Sender
 /// </summary>
 /// <param name="bot">Reference to the bot</param>
 /// <param name="SendingInterval">Interval of sending in milliseconds</param>
 public TelegramMessageSender(TelegramFSMBot bot, int SendingInterval = 50, bool logMessage = false)
 {
     this.bot           = bot;
     Queue              = new LinkedList <TelegramMessage>();
     SendTimer          = new Timer(SendingInterval);
     SendTimer.Elapsed += TimeToSend;
     LoggingEnabled     = logMessage;
     SendTimer.Start();
 }
Beispiel #2
0
        private static async Task TelegramCallbackQuery(TelegramFSMBot bot, CallbackQuery callbackQuery)
        {
            long   UserId       = callbackQuery.From.Id;
            string CallbackData = callbackQuery.Data;
            TelegramButtonPressedCommand command = new TelegramButtonPressedCommand(UserId, CallbackData);
            await bot.AnswerCallbackQueryAsync(callbackQuery.Id);

            bot.Dispatch(command);
        }
Beispiel #3
0
 /// <summary>
 /// Creates an instance of Sender
 /// </summary>
 /// <param name="bot">Reference to the bot</param>
 public TelegramMessageSender(TelegramFSMBot bot, bool logMessage = false)
 {
     this.bot           = bot;
     Queue              = new LinkedList <TelegramMessage>();
     SendTimer          = new Timer(SENDING_INTERVAL);
     SendTimer.Elapsed += TimeToSend;
     LoggingEnabled     = logMessage;
     SendTimer.Start();
 }
Beispiel #4
0
 private static async Task AnswerPreCheckoutQuetry(TelegramFSMBot botClient, PreCheckoutQuery preCheckoutQuery)
 {
     try
     {
         string OopsAnswer = "";
         bool   result     = botClient.PerformPreCheckoutQuery(preCheckoutQuery.InvoicePayload, ref OopsAnswer);
         if (result)
         {
             await botClient.AnswerPreCheckoutQueryAsync(preCheckoutQuery.Id);
         }
         else
         {
             await botClient.AnswerPreCheckoutQueryAsync(preCheckoutQuery.Id, OopsAnswer);
         }
     }
     catch (Exception err)
     {
         BotUtils.LogException(err);
     }
 }
Beispiel #5
0
        private static async Task TelegramMessage(TelegramFSMBot bot, Message message)
        {
            if (message.Type == MessageType.Text)
            {
                if (Regex.IsMatch(message.Text, PARAMETRIC_COMMAND_PALETTE))
                {
                    string ParametricCommand = Regex.Match(message.Text, PARAMETRIC_COMMAND_PALETTE).Groups[1].Value;
                    bot.ReceiveParametricStart(new ParametricStartEventArgs()
                    {
                        ParametricCommand = ParametricCommand, UserId = message.From.Id
                    });
                    return;
                }
                TelegramTextCommand command = new TelegramTextCommand(message.From.Id, message.Text);
                bot.Dispatch(command);
            }
            if (message.Type == MessageType.Photo || message.Type == MessageType.Document)
            {
                MemoryStream    ms       = new MemoryStream();
                string          FileName = null;
                TelegramCommand command  = null;
                switch (message.Type)
                {
                case MessageType.Photo:
                    bot.GetInfoAndDownloadFileAsync(message.Photo.Last().FileId, ms).Wait();
                    ms.Seek(0, SeekOrigin.Begin);
                    command = new TelegramPhotoCommand(message.From.Id, ms.ToArray());
                    break;

                case MessageType.Document:
                    if (message.Document.FileSize < 19922944)
                    {
                        if (bot.AnswerToFilesWithType)
                        {
                            bot.Sender.Enqueue(new TelegramTypingMessage(message.From.Id));
                        }
                        bot.GetInfoAndDownloadFileAsync(message.Document.FileId, ms).Wait();
                        ms.Seek(0, SeekOrigin.Begin);
                        FileName = message.Document.FileName;
                        command  = new TelegramFileCommand(message.From.Id, ms.ToArray(), FileName);
                    }
                    else
                    {
                        FileTooBigEventArgs ftbea = new FileTooBigEventArgs(message.Chat.Id, message.From.Id, message.MessageId, message.Document.FileName, message.Document.FileId, message.Document.FileSize);
                        EventHandler <FileTooBigEventArgs> handler = bot.FileTooBig;
                        handler.Invoke(bot, ftbea);
                        command = new TelegramEmptyCommand(message.From.Id);
                    }
                    break;
                }
                bot.Dispatch(command);
            }
            if (message.Type == MessageType.SuccessfulPayment)
            {
                string           InvoiceId = message.SuccessfulPayment.InvoicePayload;
                PaymentEventArgs pea       = new PaymentEventArgs(InvoiceId);
                EventHandler <PaymentEventArgs> handler = bot.PaymentReceived;
                handler.Invoke(bot, pea);
            }
            if (message.Type == MessageType.ChatMembersAdded)
            {
                Console.WriteLine(message.NewChatMembers);
            }
            if (message.Type == MessageType.Location || (message.Type == MessageType.Venue && message.Location != null))
            {
                double[] coords = new double[2];
                coords[0] = message.Location.Latitude;
                coords[1] = message.Location.Longitude;
                TelegramGeoCommand command = new TelegramGeoCommand(message.From.Id, coords);
                bot.Dispatch(command);
            }
        }