コード例 #1
0
        public async Task <Response <Message> > SendVideoAsync(ChatId chatId, TelegramFile video, int duration = 0,
                                                               int width  = 0,
                                                               int height = 0, string caption = "",
                                                               bool disableNotification   = false, int replyToMessageId = 0,
                                                               InlineKeyboard replyMarkup = null)
        {
            var markup = "";

            if (replyMarkup != null)
            {
                markup = replyMarkup.GetJson();
            }
            var url = Address + Token + "/sendVideo";

            return(await SendRequest <Response <Message> >(new Dictionary <string, object>
            {
                { "chat_id", chatId.Id },
                { "video", video },
                { "duration", duration },
                { "width", width },
                { "height", height },
                { "caption", caption },
                { "disable_notification", disableNotification },
                { "reply_to_message_id", replyToMessageId },
                { "reply_markup", markup },
            }, url));
        }
コード例 #2
0
 internal static async Task <bool> SendFileAsync(TelegramFile file, Tuple <TLAbsInputPeer, long> peer,
                                                 Language text, TextAsCaption textAsCaption, TelegramBotAbstract telegramBotAbstract,
                                                 string username, string lang, long?replyToMessageId, bool disablePreviewLink)
 {
     return(await telegramBotAbstract.SendFileAsync(file, peer, text, textAsCaption, username, lang,
                                                    replyToMessageId, disablePreviewLink));
 }
コード例 #3
0
        public async Task <Response <Message> > SendAudioAsync(ChatId chatId, TelegramFile audio, string caption = "",
                                                               int duration               = 0,
                                                               string performer           = "", string title = "", bool disableNotification = false, int replyToMessageId = 0,
                                                               InlineKeyboard replyMarkup = null)
        {
            var markup = "";

            if (replyMarkup != null)
            {
                markup = replyMarkup.GetJson();
            }
            var url = Address + Token + "/sendAudio";

            return(await SendRequest <Response <Message> >(new Dictionary <string, object>
            {
                { "chat_id", chatId.Id },
                { "voice", audio },
                { "caption", caption },
                { "performer", performer },
                { "title", title },
                { "duration", duration },
                { "disable_notification", disableNotification },
                { "reply_to_message_id", replyToMessageId },
                { "reply_markup", markup },
            }, url));
        }
コード例 #4
0
        internal static TelegramFile GenerateFileFromString(string data, string fileName, string caption,
                                                            string mimeType)
        {
            var stream       = GenerateStreamFromString(data);
            var telegramFile = new TelegramFile(stream, fileName, caption, mimeType);

            return(telegramFile);
        }
コード例 #5
0
 private static async Task SendReportOfSuccessAndFailures2(Stream stream, string filename,
                                                           TelegramBotAbstract sender, MessageEventArgs e)
 {
     var file = new TelegramFile(stream, filename, "", "application/octet-stream");
     var peer = new Tuple <TLAbsInputPeer, long>(null, e.Message.From.Id);
     var text = new Language(new Dictionary <string, string>
     {
         { "en", "" }
     });
     await SendMessage.SendFileAsync(file, peer, text, TextAsCaption.AS_CAPTION,
                                     sender, e.Message.From.Username, e.Message.From.LanguageCode, null, true);
 }
コード例 #6
0
        public async Task <Response <bool> > SetChatPhotoAsync(ChatId chatId, TelegramFile photo)
        {
            var url = Address + Token + "/setChatPhoto";

            if (photo.Type == TelegramFileType.Raw)
            {
                return(await SendRequest <Response <bool> >(new Dictionary <string, object>
                {
                    { "chat_id", chatId.Id },
                    { "photo", photo },
                }, url));
            }
            throw new ArgumentException("Photo must be new chat photo, uploaded using multipart/form-data");
        }
コード例 #7
0
        private static async Task <int?> QueryBot2(bool execute_true_select_false, MessageEventArgs e,
                                                   TelegramBotAbstract sender)
        {
            if (e.Message.ReplyToMessage == null || string.IsNullOrEmpty(e.Message.ReplyToMessage.Text))
            {
                var text = new Language(new Dictionary <string, string>
                {
                    { "en", "You have to reply to a message containing the query" }
                });
                await sender.SendTextMessageAsync(e.Message.From.Id, text, ChatType.Private,
                                                  e.Message.From.LanguageCode, ParseMode.Html, null, e.Message.From.Username, e.Message.MessageId);

                return(null);
            }

            var query = e.Message.ReplyToMessage.Text;

            if (execute_true_select_false)
            {
                var i = SqLite.Execute(query);

                var text = new Language(new Dictionary <string, string>
                {
                    { "en", "Query execution. Result: " + i }
                });
                await sender.SendTextMessageAsync(e.Message.From.Id, text, ChatType.Private,
                                                  e.Message.From.LanguageCode, ParseMode.Html, null, e.Message.From.Username, e.Message.MessageId);

                return(i);
            }

            var x             = SqLite.ExecuteSelect(query);
            var x2            = StreamSerialization.SerializeToStream(x);
            var documentInput =
                new TelegramFile(x2, "table.bin", "Query result", "application/octet-stream");
            TLAbsInputPeer peer2 = new TLInputPeerUser {
                UserId = e.Message.From.Id
            };
            var peer  = new Tuple <TLAbsInputPeer, long>(peer2, e.Message.From.Id);
            var text2 = new Language(new Dictionary <string, string>
            {
                { "en", "Query result" }
            });
            var v = await sender.SendFileAsync(documentInput, peer, text2, TextAsCaption.AS_CAPTION,
                                               e.Message.From.Username, e.Message.From.LanguageCode, e.Message.MessageId, false);

            return(v ? 1 : 0);
        }
コード例 #8
0
        public async Task <Response <Message> > SendStickerAsync(ChatId chatId, TelegramFile sticker,
                                                                 bool disableNotification = false, int replyToMessageId = 0, InlineKeyboard replyMarkup = null)
        {
            var markup = "";

            if (replyMarkup != null)
            {
                markup = replyMarkup.GetJson();
            }
            var methodUrl = Address + Token + "/sendSticker";

            return(await SendRequest <Response <Message> >(new Dictionary <string, object>
            {
                { "chat_id", chatId.Id },
                { "sticker", sticker },
                { "disable_notification", disableNotification },
                { "reply_to_message_id", replyToMessageId },
                { "reply_markup", markup }
            }, methodUrl));
        }
コード例 #9
0
        internal static async Task UpdateLinksFromJsonAsync(TelegramBotAbstract sender, MessageEventArgs e)
        {
            try
            {
                if (e.Message.Chat.Type != ChatType.Private)
                {
                    return;
                }

                if (!Owners.CheckIfOwner(e.Message.From.Id))
                {
                    return;
                }

                if (e.Message.ReplyToMessage == null)
                {
                    return;
                }

                if (e.Message.ReplyToMessage.Document == null)
                {
                    return;
                }

                var d = e.Message.ReplyToMessage.Document;
                var f = await sender.DownloadFileAsync(d);

                Console.WriteLine(f.Item2.Length);
                f.Item2.Seek(0, SeekOrigin.Begin);
                var reader = new StreamReader(f.Item2);
                var text   = reader.ReadToEnd();

                var obj = JsonConvert.DeserializeObject(text);
                Console.WriteLine(obj.GetType());
                var jArray = (JArray)obj;

                var L = new ListaGruppiTG_Update();

                var gruppoTGs = new List <GruppoTG>();
                foreach (var x in jArray)
                {
                    try
                    {
                        var jObject  = (JObject)x;
                        var gruppoTG = new GruppoTG(jObject["id_link"], jObject["class"], jObject["permanentId"],
                                                    jObject["LastUpdateInviteLinkTime"]);
                        gruppoTGs.Add(gruppoTG);
                    }
                    catch
                    {
                        ;
                    }
                }

                gruppoTGs = RimuoviDuplicati(gruppoTGs);

                foreach (var gruppoTG in gruppoTGs)
                {
                    try
                    {
                        await Task.Delay(100);
                    }
                    catch
                    {
                        ;
                    }

                    try
                    {
                        await UpdateLinksFromJson2Async(gruppoTG, sender, e, L);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                        var ex4m = "4" + "\n\n" + ex.Message;
                        await sender.SendTextMessageAsync(e.Message.From.Id,
                                                          new Language(
                                                              new Dictionary <string, string>
                        {
                            {
                                "it",
                                ex4m
                            }
                        }),
                                                          ChatType.Private, "it", ParseMode.Default, null, e.Message.From.Username);

                        return;
                    }
                }

                var s2 = "Link generati\n\n" +
                         "Totale: " + L.Count() + "\n" +
                         "Nuovi: " + L.GetCount_Filtered(SuccessoGenerazioneLink.NUOVO_LINK) + "\n" +
                         "Riciclati: " + L.GetCount_Filtered(SuccessoGenerazioneLink.RICICLATO) + "\n" +
                         "Errori: " + L.GetCount_Filtered(SuccessoGenerazioneLink.ERRORE) + "\n";

                await sender.SendTextMessageAsync(e.Message.From.Id,
                                                  new Language(
                                                      new Dictionary <string, string>
                {
                    {
                        "it",
                        s2
                    }
                }),
                                                  ChatType.Private, "it", ParseMode.Default, null, e.Message.From.Username);

                var st = L.GetStringList();

                var dict = new Dictionary <string, string>
                {
                    { "it", "Gruppi con link rigenerati" }
                };
                var stream = GenerateStreamFromString(st);
                var tf     = new TelegramFile(stream, "groups.txt", "Gruuppi con link rigenerati", "text/plain");
                await sender.SendFileAsync(tf, new Tuple <TLAbsInputPeer, long>(null, e.Message.From.Id),
                                           new Language(dict),
                                           TextAsCaption.AFTER_FILE, e.Message.From.Username, e.Message.From.LanguageCode, null, false);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
コード例 #10
0
 internal static async Task <bool> SendFileAsync(TelegramFile file, Tuple <TLAbsInputPeer, long> peer,
                                                 Language text, TextAsCaption textAsCaption, TelegramBotAbstract telegramBotAbstract,
                                                 string username, string lang)
 {
     return(await telegramBotAbstract.SendFileAsync(file, peer, text, textAsCaption, username, lang));
 }