Exemplo n.º 1
0
        /// <summary>
        /// Информация о боте
        /// </summary>
        /// <returns></returns>
        private BotInfo GetBotInfo()
        {
            try
            {
                BotInfo bot = new BotInfo();
                using (Db.BotMngmntDbContext db = new Db.BotMngmntDbContext())
                {
                    bot = db.BotInfo.Where(b => b.Name == BusinessLayer.GeneralFunction.BotName()).Include(b => b.Configuration).FirstOrDefault();

                    if (bot != null)
                    {
                        this.BotOwner = Convert.ToInt32(bot.OwnerChatId);
                        return(bot);
                    }

                    else
                    {
                        return(db.BotInfo.FirstOrDefault());
                    }
                }
            }

            catch (Exception e)
            {
                return(null);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Вставить данные о файл в таблицу AttachmentTelegram.
        /// </summary>
        /// <param name="mediaFile">Класс описывающий файл. FileId там должен быть пустой, это значит что для этого бота файл отпралвяется впервые.
        /// Для этого мы и записываем информацию в таблицу Attachment, что бы постоянно не отправлять этот файл целиков а только FileId на серевере телеграм</param>
        /// <param name="FileId"></param>
        /// <returns></returns>
        protected int InsertToAttachmentTelegram(MediaFile mediaFile, string FileId)
        {
            try
            {
                if (mediaFile.AttachmentFsId > 0 && FileId != "")
                {
                    using (Db.BotMngmntDbContext db = new Db.BotMngmntDbContext())
                    {
                        var Attach = db.AttachmentTelegram.Where(a => a.AttachmentFsId == mediaFile.AttachmentFsId && a.BotInfoId == BotInfo.Id).FirstOrDefault();

                        if (Attach == null)
                        {
                            AttachmentTelegram attachment = new AttachmentTelegram
                            {
                                AttachmentFsId = mediaFile.AttachmentFsId,
                                FileId         = FileId,
                                BotInfoId      = BotInfo.Id,
                            };

                            db.AttachmentTelegram.Add(attachment);
                            db.SaveChanges();
                            return(attachment.Id);
                        }

                        if (Attach != null && Attach.FileId == null)
                        {
                            Attach.FileId = FileId;
                            db.SaveChanges();
                            return(Attach.Id);
                        }

                        else
                        {
                            return(-1);
                        }
                    }
                }

                else
                {
                    return(-1);
                }
            }

            catch
            {
                return(-1);
            }
        }
Exemplo n.º 3
0
        protected Configuration GetConfigurationBot(int BotId)
        {
            try
            {
                using (Db.BotMngmntDbContext db = new Db.BotMngmntDbContext())
                {
                    return(db.Configuration.Where(c => c.BotInfoId == BotId).FirstOrDefault());
                }
            }

            catch (Exception exp)
            {
                return(null);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Вставить данные о файл в таблицу AttachmentTelegram.
        /// Что бы постоянно не отправлять этот файл целиком а только FileId на серевере телеграм
        /// </summary>
        /// <param name="FileId"></param>
        /// <param name="AttachmentFsId"></param>
        /// <returns></returns>
        protected int InsertToAttachmentTelegram(string FileId, int AttachmentFsId)
        {
            using (Db.BotMngmntDbContext db = new Db.BotMngmntDbContext())
            {
                AttachmentTelegram attachmentTelegram = new AttachmentTelegram
                {
                    AttachmentFsId = AttachmentFsId,
                    FileId         = FileId,
                    BotInfoId      = BotInfo.Id
                };

                db.AttachmentTelegram.Add(attachmentTelegram);

                return(db.SaveChanges());
            }
        }
        public override BotMessage BuildMsg()
        {
            DbContext = new Db.BotMngmntDbContext();

            BotList = DbContext.Bot.Where(b => b.Visable && b.FollowerId == FollowerId && !b.Deleted).ToList();

            DbContext.Dispose();

            base.TextMessage = "Мои боты";

            if (BotList.Count > 0)
            {
                BotBtns = new InlineKeyboardCallbackButton[BotList.Count + 1][];

                int count = 0;

                foreach (var bot in BotList)
                {
                    BotBtns[count] = new InlineKeyboardCallbackButton[1];

                    if (!bot.Blocked)
                    {
                        BotBtns[count][0] = BuildInlineBtn(bot.BotName, BuildCallData(ConnectBot.GetBotCmd, ConnectBot.ModuleName, bot.Id));
                    }

                    else
                    {
                        BotBtns[count][0] = BuildInlineBtn(bot.BotName + " (Заблокирован)", BuildCallData(ConnectBot.GetBotCmd, ConnectBot.ModuleName, bot.Id));
                    }

                    count++;
                }

                BotBtns[BotBtns.Length - 1]    = new InlineKeyboardCallbackButton[1];
                BotBtns[BotBtns.Length - 1][0] = BuildInlineBtn("Назад", BuildCallData(MainMenuBot.ToMainMenuCmd, MainMenuBot.ModuleName));

                base.MessageReplyMarkup = new InlineKeyboardMarkup(BotBtns);

                return(this);
            }

            else
            {
                return(null);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// id пользователя в в БД
        /// </summary>
        /// <param name="ChatId"></param>
        /// <returns></returns>
        private int GetFollowerID(long ChatId)
        {
            int id = 0;

            try
            {
                using (Db.BotMngmntDbContext db = new Db.BotMngmntDbContext())
                {
                    var follower = db.Follower.Where(f => f.ChatId == Convert.ToInt32(ChatId)).FirstOrDefault();

                    if (follower != null)
                    {
                        id = follower.Id;
                    }
                }
            }
            catch (Exception exp)
            {
            }
            return(id);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Вытаскивам с сервера телеграм этот файл и записываем его в БД бота. Нам нужно хранить эти файлы, т.к если бота заблокируют или
        /// мы подключим допольнительных ботов, то мы не сможем отправить FileId другого бота. Поэтому мы храним в бд эти файлы
        /// </summary>
        /// <param name="id">FileId файл на сервере телеграм</param>
        /// <returns>Возращает id записи из таблицы AttachmentFS</returns>
        protected async Task <int> InsertToAttachmentFs(string id = null, string Caption = "")
        {
            if (id == null)
            {
                id = FileId;
            }
            Db.BotMngmntDbContext db = new Db.BotMngmntDbContext();

            try
            {
                var file = await TelegramClient.GetFileAsync(id);

                System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();

                await file.FileStream.CopyToAsync(memoryStream);

                // Довавбляем в БД
                AttachmentFs attachmentFs = new AttachmentFs
                {
                    Fs               = memoryStream.ToArray(),
                    GuId             = Guid.NewGuid(),
                    Caption          = Caption,
                    AttachmentTypeId = MediaFileTypeId
                };

                db.AttachmentFs.Add(attachmentFs);

                int type = HowMediaType(Update.Message); // узнаем какой типа файла. Фото, Аудио и тд

                //Когда оператора будет смотреть заявку через того же бота, через коготого пользователь
                //оформлял заявку, мы отправим ему ID файла на сервере телеграм вместо целой картинки. Это будет быстрее.
                //А если оператор будет смотреть заявку из другого бота (например старого удалят), то мы сможем отрпавить файл картинки

                //максимальный размер файла 15 мб
                if (file != null && file.FileSize <= 15 * 1024 * 1024 && memoryStream != null && await db.SaveChangesAsync() > 0 && type > 0)
                {
                    AttachmentTelegram attachment = new AttachmentTelegram();
                    attachment.FileId         = id;
                    attachment.AttachmentFsId = attachmentFs.Id;
                    attachment.BotInfoId      = BotInfo.Id;

                    db.AttachmentTelegram.Add(attachment);

                    if (await db.SaveChangesAsync() > 0)
                    {
                        return(Convert.ToInt32(attachment.AttachmentFsId));
                    }

                    else
                    {
                        return(-1);
                    }
                }

                if (file.FileSize > 15 * 1024 * 1024)
                {
                    await SendMessage(new BotMessage { TextMessage = "Ошибка. Файл не может быть больше 15 мб!" });

                    return(-1);
                }

                else
                {
                    return(-1);
                }
            }


            catch (Exception exp)
            {
                return(-1);
            }

            finally
            {
                db.Dispose();
            }
        }