コード例 #1
0
 public static ValidationResult <GetChatMember> CreateValidation(this GetChatMember value) =>
 new ValidationResult <GetChatMember>(value).ValidateRequired(x => x.ChatId)
 .ValidateRequired(x => x.UserId);
コード例 #2
0
        private static async Task RunBot()
        {
            try
            {
                var bot = new TelegramBot(BotToken);

                var me = await bot.MakeRequestAsync(new GetMe());

                var db = new MaterialtelegramBotdbEntities();

                long       offset  = 0;
                var        whatDo  = 0;
                const long adminId = 87310097;

                while (true)
                {
                    var updates = await bot.MakeRequestAsync(new GetUpdates()
                    {
                        Offset = offset
                    });

                    foreach (var item in updates)
                    {
                        try
                        {
                            var qGetBotUser = (from a in db.Users
                                               where a.UserID.Equals(item.Message.Chat.Id)
                                               select a).SingleOrDefault();

                            if (qGetBotUser == null)
                            {
                                var botUser = new User
                                {
                                    UserID    = item.Message.Chat.Id,
                                    FirstName = item.Message.Chat.FirstName,
                                    LastName  = item.Message.Chat.LastName,
                                    UserName  = item.Message.Chat.Username
                                };

                                db.Users.Add(botUser);
                                db.SaveChanges();
                            }

                            offset = item.UpdateId + 1;

                            var id        = item.Message.Chat.Id;
                            var userText  = item.Message.Text;
                            var from      = item.Message.From;
                            var photos    = item.Message.Photo;
                            var contact   = item.Message.Contact;
                            var location  = item.Message.Location;
                            var queryBack = item.CallbackQuery;

                            var qGet = (from a in db.Settings
                                        where a.Id.Equals(1)
                                        select a).SingleOrDefault();

                            var checkUser = new GetChatMember(qGet.Channel ?? 0, id);
                            var isUser    = await bot.MakeRequestAsync(checkUser);

                            var isBotLock       = false;
                            var isUserHasAccess = false;

                            if (qGet.Channel != null)
                            {
                                isBotLock = true;
                                if (isUser.Status == "administrator" || isUser.Status == "member" || isUser.Status == "creator")
                                {
                                    isUserHasAccess = true;
                                }
                            }

                            if (item.Message.Chat.Id == adminId)
                            {
                                mainMenu = new ReplyKeyboardMarkup
                                {
                                    Keyboard = new[] {
                                        new[] { new KeyboardButton("\U000000A9 درباره \U000000A9"), new KeyboardButton("\U00002753 راهنما \U00002753") },
                                        new[] { new KeyboardButton("تنظیمات مدیر \U0001F3E0") }
                                    },
                                    ResizeKeyboard = true
                                };
                            }
                            else
                            {
                                mainMenu = new ReplyKeyboardMarkup
                                {
                                    Keyboard = new[] {
                                        new[] { new KeyboardButton("\U000000A9 درباره \U000000A9"), new KeyboardButton("\U00002753 راهنما \U00002753") },
                                        new[] { new KeyboardButton("\U0001F4DE تماس با ما \U0001F4DE") },
                                    },
                                    ResizeKeyboard = true
                                };
                            }

                            if ((isBotLock && isUserHasAccess) || (isBotLock == false))
                            {
                                if (whatDo == 0)
                                {
                                    switch (userText)
                                    {
                                    case "/start":

                                        var req = new SendMessage(item.Message.Chat.Id, "به ربات پیام رسان خوش آمدید")
                                        {
                                            ReplyMarkup = mainMenu
                                        };

                                        await bot.MakeRequestAsync(req);

                                        break;

                                    //************************************
                                    case string a when a.Contains("خانه"):

                                        req = new SendMessage(item.Message.Chat.Id, "خانه ربات")
                                        {
                                            ReplyMarkup = mainMenu
                                        };

                                        await bot.MakeRequestAsync(req);

                                        break;

                                    //************************************
                                    case string a when a.Contains("تنظیمات مدیر"):

                                        req = new SendMessage(item.Message.Chat.Id, "در این بخش می توانید تنظیمات خود را اعمال کنید")
                                        {
                                            ReplyMarkup = AdminMenu
                                        };

                                        await bot.MakeRequestAsync(req);

                                        break;

                                    //************************************
                                    case string a when a.Contains("درباره"):

                                        req = new SendMessage(item.Message.Chat.Id, "ربات سایت آی ترفند")
                                        {
                                            ReplyMarkup = BackToMain
                                        };

                                        await bot.MakeRequestAsync(req);

                                        break;

                                    //************************************
                                    case string a when a.Contains("راهنما"):

                                        req = new SendMessage(item.Message.Chat.Id, "این روبات برای سایت آی ترفند می باشد \n" +
                                                              " توسط آن می توانید کارهای محتلفی انجام بدهید")
                                        {
                                            ReplyMarkup = BackToMain
                                        };

                                        await bot.MakeRequestAsync(req);

                                        break;

                                    //************************************
                                    case string a when a.Contains("ربات قفل دار"):

                                        if (item.Message.Chat.Id == adminId)
                                        {
                                            req = new SendMessage(item.Message.Chat.Id, "لطفا آدرس کانالی که میخواهید کاربر در صورت عضو بود در آن بتواند از ربات استفاده کند را به همراه @ مانند @itarfand وارد کنید" +
                                                                  "\n\nاگر نمی خواهید کلمه *نه* را وارد کنید")
                                            {
                                                ReplyMarkup = AdminMenu, ParseMode = SendMessage.ParseModeEnum.Markdown
                                            };

                                            await bot.MakeRequestAsync(req);

                                            whatDo = 11;
                                        }
                                        else
                                        {
                                            req = new SendMessage(item.Message.Chat.Id, "شما مدیر نیستید")
                                            {
                                                ReplyMarkup = mainMenu
                                            };

                                            await bot.MakeRequestAsync(req);
                                        }
                                        break;

                                    //************************************
                                    case string a when a.Contains("تماس با ما"):

                                        req = new SendMessage(item.Message.Chat.Id, "لطفا پیغام خود را بفرستید. در اسرع وقت پاسخ داده خواهد شد" +
                                                              "\nنکته: پیغام خود را فقط در این پست بفرستید");

                                        await bot.MakeRequestAsync(req);

                                        whatDo = 12;

                                        break;

                                    //************************************
                                    case string a when a.Contains("پاسخ به پیغام ها"):

                                        if (item.Message.Chat.Id == adminId)
                                        {
                                            req = new SendMessage(item.Message.Chat.Id, "لطفا بر روی پیغام مورد نظر راست کلیک کنید و reply را انتخاب کرده و پیغام خود را بنویسید");

                                            await bot.MakeRequestAsync(req);

                                            whatDo = 20;
                                        }
                                        else
                                        {
                                            req = new SendMessage(item.Message.Chat.Id, "شما مدیر نیستید")
                                            {
                                                ReplyMarkup = mainMenu
                                            };

                                            await bot.MakeRequestAsync(req);
                                        }
                                        break;
                                    }
                                }
                                else
                                {
                                    if (whatDo == 11)
                                    {
                                        var requserText = new SendMessage(item.Message.Chat.Id, userText)
                                        {
                                            ReplyMarkup = AdminMenu
                                        };

                                        await bot.MakeRequestAsync(requserText);

                                        try
                                        {
                                            var qGetLock = (from a in db.Settings
                                                            where a.Id.Equals(1)
                                                            select a).SingleOrDefault();

                                            if (userText.Equals("نه"))
                                            {
                                                qGetLock.Channel = 1235;
                                            }
                                            else
                                            {
                                                qGetLock.Channel = Convert.ToInt64(userText);
                                            }

                                            db.Settings.Attach(qGetLock);
                                            db.Entry(qGetLock).State = System.Data.Entity.EntityState.Modified;
                                            db.SaveChanges();
                                        }
                                        catch (Exception)
                                        {
                                            var req = new SendMessage(item.Message.Chat.Id, "خطا")
                                            {
                                                ReplyMarkup = mainMenu
                                            };

                                            await bot.MakeRequestAsync(req);

                                            continue;
                                        }

                                        whatDo = 0;
                                    }

                                    else if (whatDo == 12)
                                    {
                                        //var requserText = new SendMessage(adminId, from + userText) { ReplyMarkup = mainMenu, ParseMode = SendMessage.ParseModeEnum.Markdown };

                                        var fileId   = item.Message.MessageId;
                                        var fromUser = item.Message.From.Id;
                                        var req2     = new ForwardMessage(adminId, fromUser, fileId);

                                        //await bot.MakeRequestAsync(requserText);
                                        await bot.MakeRequestAsync(req2);

                                        whatDo = 0;
                                    }

                                    else if (whatDo == 20)
                                    {
                                        if (item.Message.ReplyToMessage?.Text != null)
                                        {
                                            var toUser = item.Message.ReplyToMessage.ForwardFrom.Id;

                                            var req2 = new SendMessage(toUser, item.Message.Text);
                                            await bot.MakeRequestAsync(req2);
                                        }

                                        whatDo = 0;
                                    }

                                    else
                                    {
                                        var req3 = new SendMessage(item.Message.Chat.Id, "لطفا ابزار مورد نظر خود را انتخاب کنید")
                                        {
                                            ReplyMarkup = mainMenu
                                        };

                                        await bot.MakeRequestAsync(req3);
                                    }
                                }
                            }
                            else
                            {
                                var req = new SendMessage(item.Message.Chat.Id, "برای استفاده از این ربات ابتدا باید در کانال @itarfand عضو شوید");

                                await bot.MakeRequestAsync(req);
                            }
                        }

                        catch (Exception)
                        {
                            var req = new SendMessage(item.Message.Chat.Id, "خطا")
                            {
                                ReplyMarkup = mainMenu
                            };

                            await bot.MakeRequestAsync(req);

                            whatDo = 0;

                            break;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            // ReSharper disable once FunctionNeverReturns
        }