public static string AddFriend(User creator, long userId, IMessageSenderService sender) { if (creator.Id == userId) { return("❌ Отправить запрос самому себе невозможно."); } if (creator.Friends != null) { var friends = FriendsHelper.GetFriends(creator.Friends); if (friends.Any(id => id == userId)) { return("❌ Этот пользователь уже у Вас в списке друзей"); } } var helper = new UsersHelper(); var user = Main.Api.Users.GetUserFromId(userId); bool isRequest = false; if (sender.Platform == MessengerPlatform.Vkontakte) { if (user.VkId == 0) { return("❌ Этот пользователь зарегестрирован через telegram. Добавление в друзья между платформами пока что недоступны."); } isRequest = true; sender.Text($"🏁 Пользователь {helper.GetLink(creator)} отправил Вам запрос в друзья." + $"\n ❓ Чтобы принять или отклонить запрос, откройте меню телефона в разделе запросы в друзья.", user.VkId); } else { if (user.TgId == 0) { return("❌ Этот пользователь зарегистрирован через ВКонтакте. Добавление в друзья между платформами пока что недоступны."); } isRequest = true; sender.Text($"🏁 Пользователь {helper.GetLink(creator)} приглашает Вас на гонку!" + $"\n ❓ Чтобы принять или отклонить запрос, откройте меню телефона в разделе запросы в друзья.", user.TgId); } if (isRequest) { using (var db = new Database()) { var usr = db.Users.Single(u => u.Id == userId); if (usr.FriendsRequests is null) { usr.FriendsRequests = ""; } usr.FriendsRequests += $"{creator.Id};"; db.SaveChanges(); } } return("✔ Запрос на дружбу отправлен."); }
/// <summary> /// The route handler for the request, which lists friends for this user to /// enable a social graph within the app. /// </summary> /// <param name="context">The request/response context.</param> public override void ProcessRequest(HttpContext context) { User user = GetUser(context); // User will be NULL if there isn't someone signed in. if (user == null) { context.Response.StatusCode = 401; context.Response.StatusDescription = "Unauthorized request."; return; } ArrayList friends = FriendsHelper.GetFriends(user); context.Response.Write(JsonConvert.SerializeObject(friends)); }
public void Execute(Message msg, IMessageSenderService sender, IBot bot) { if (Main.Api.Users.IsBanned(msg)) { return; } if (!Main.Api.Users.CheckUser(msg)) { var kb2 = new KeyboardBuilder(bot); kb2.AddButton("➕ Зарегистрироваться", "start"); sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build()); return; } var user = Main.Api.Users.GetUser(msg); var helper = new UsersHelper(); var kb = new KeyboardBuilder(bot); var text = $"🧒 Друзья пользователя {helper.GetLink(user)}"; if (user.Friends is null) { text = "💔 Ваш список друзей пуст. Найдите себе друзей скорее!"; kb.AddButton("🔙 В меню телефона", "menuphone"); } else { var friends = FriendsHelper.GetFriends(user.Friends); foreach (var friendId in friends) { var friend = Main.Api.Users.GetUserFromId(friendId); text += $"\n 🧒 [{friend.Id}]| [{friend.Prefix}] {helper.GetLink(friend)} - {friend.Level} уровень."; } kb.AddButton("➕ Добавить друга", "addfriend"); kb.AddLine(); kb.AddButton("❌ Удалить друга", "removefriend"); kb.AddLine(); kb.AddButton("✔ Запросы в друзья", "requestfriends"); kb.AddLine(); kb.AddButton("↩ В меню телефона", "menuphone"); } sender.Text(text, msg.ChatId, kb.Build()); }
public void Execute(Message msg, IMessageSenderService sender, IBot bot) { if (Main.Api.Users.IsBanned(msg)) { return; } if (!Main.Api.Users.CheckUser(msg)) { var kb2 = new KeyboardBuilder(bot); kb2.AddButton("➕ Зарегистрироваться", "start"); sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build()); return; } var user = Main.Api.Users.GetUser(msg); var kb = new KeyboardBuilder(bot); if (user.FriendsRequests == "" || user.FriendsRequests is null) { sender.Text("🤔 У Вас нет запросов в друзья", msg.ChatId, kb.Build()); return; } var requests = FriendsHelper.GetFriends(user.FriendsRequests); var text = "🧒 Запросы в друзья"; foreach (var request in requests) { var req = Main.Api.Users.GetUserFromId(request); text += $"\n🧒 {req.Id} | [{req.Prefix}] {req.Name} - {req.Level} уровень."; } kb.AddButton("✔ Принять запрос", "acceptrequestfriend", new List <string>() { requests[0].ToString() }); kb.AddLine(); kb.AddButton("❌ Отклонить запрос", "noacceptrequestfriend", new List <string>() { requests[0].ToString() }); sender.Text(text, msg.ChatId, kb.Build()); }
public void Execute(Message msg, IMessageSenderService sender, IBot bot) { if (Main.Api.Users.IsBanned(msg)) { return; } if (!Main.Api.Users.CheckUser(msg)) { var kb2 = new KeyboardBuilder(bot); kb2.AddButton("➕ Зарегистрироваться", "start"); sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build()); return; } var request = msg.Payload.Arguments[0].ToLong(); var u = Main.Api.Users.GetUser(msg); using (var db = new Database()) { var user = db.Users.Single(uu => uu.Id == u.Id); var requests = FriendsHelper.GetFriends(user.FriendsRequests); requests.Remove(request); var s = string.Empty; foreach (var rq in requests) { s += $"{rq};"; } user.FriendsRequests = s; user.Friends += $"{request};"; var userFriend = db.Users.Single(uu => uu.Id == request); userFriend.Friends += $"{user.Id};"; db.SaveChanges(); } var kb = new KeyboardBuilder(bot); kb.AddButton("📱 В меню телефона", "menuphone"); sender.Text("Пользователь добавлен в список Ваших друзей!", msg.ChatId, kb.Build()); }
public static string RemoveFriend(User cretor, long userId) { var friends = FriendsHelper.GetFriends(cretor.Friends); if (friends.All(id => id != userId)) { return("❌ Пользователя с таким Id нет в Ваших друзьях."); } using (var db = new Database()) { var crt = db.Users.Single(u => u.Id == cretor.Id); var user = db.Users.Single(u => u.Id == userId); var fr1 = FriendsHelper.GetFriends(crt.Friends); var fr2 = FriendsHelper.GetFriends(user.Friends); fr1.Remove(userId); fr2.Remove(cretor.Id); var stringFriends1 = string.Empty; var stringFriends2 = string.Empty; foreach (var frs1 in fr1) { stringFriends1 += $"{frs1};"; } foreach (var frs2 in fr2) { stringFriends2 += $"{frs2};"; } crt.Friends = stringFriends1; user.Friends = stringFriends2; db.SaveChanges(); } return("✔ Пользователь удален из списка ваших друзей."); }
public void Execute(Message msg, IMessageSenderService sender, IBot bot) { if (Main.Api.Users.IsBanned(msg)) { return; } if (!Main.Api.Users.CheckUser(msg)) { var kb2 = new KeyboardBuilder(bot); kb2.AddButton("➕ Зарегистрироваться", "start"); sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build()); return; } var kb = new KeyboardBuilder(bot); if (sender.Platform == MessengerPlatform.Vkontakte) { if (msg.ChatId > 2000000000) { var t = "❌ Заходить в раздел гонок можно только в личных сообщениях."; kb.AddButton(ButtonsHelper.ToHomeButton()); sender.Text(t, msg.ChatId, kb.Build()); return; } } var user = Main.Api.Users.GetUser(msg); if (user.OnWork) { sender.Text("❌ Вы не можете идти в гонку, пока находитесь на работе, дождитесь завершения и возвращайтесь!", msg.ChatId); return; } var garage = Main.Api.Garages.GetGarage(user.Id); if (!garage.IsPhone) { var t = "❌ Для участия в гонках необходим телефон. Загляните в магазин!"; kb.AddButton("🏪 Перейти в магазин", "store"); sender.Text(t, msg.ChatId, kb.Build()); return; } if (msg.Payload.Arguments is null) { var text = "🏁 Ваши последние 6 друзей:"; var friends = FriendsHelper.GetFriends(user.Friends); int counter = 0; int counter2 = 0; foreach (var friend in friends) { if (counter2 >= 6) { break; } var frd = Main.Api.Users.GetUserFromId(friend); text += $"\n [{frd.Prefix}] {frd.Name} (ур. {frd.Level})"; kb.AddButton($"{frd.Name}", "raceFriendStart", new List <string>() { $"{frd.Id}" }); counter++; counter2++; if (counter == 2) { kb.AddLine(); counter = 0; } } kb.AddButton("➕ Указать Id друга вручную", "racefriend", new List <string>() { "123" }); sender.Text(text, msg.ChatId, kb.Build()); } else { var text = "🏁 Укажите id (в боте) своего друга (друг должен быть в списке Ваших друзей)."; kb.AddButton("↩ Вернуться в меню гонок", "race"); if (user.Race != 0) { text = "❌ А ну стоять. Ты уже находишься в гонке!"; kb.AddLine(); kb.AddButton("❌ Отменить гонку", "racestop"); } else { UsersCommandHelper.GetHelper().Add("racefriend", user.Id); } sender.Text(text, msg.ChatId, kb.Build()); } }
public static string RunFriendBattle(long creatorId, long enemyId, IMessageSenderService sender, IBot bot, Message msg) { if (creatorId == enemyId) { return("❌ Участвовать в гонке с самим собой невозможно."); } using (var db = new Database()) { var creator = db.Users.Single(u => u.Id == creatorId); var friends = FriendsHelper.GetFriends(creator.Friends); if (!friends.Any(f => f == enemyId)) { return("❌ Этот пользователь не в списке Ваших друзей."); } if (creator.Race != 0) { return("❌ Вы уже участвуете в гонке!"); } User enemy; try { enemy = db.Users.Single(u => u.Id == enemyId); if (enemy.Race != 0) { return("❌ Этот пользователь уже учавствует в гонке!"); } } catch { return("❌ Не найден пользователь с таким ID"); } var race = new Models.Race(); race.Creator = creatorId; race.Enemy = enemyId; race.Id = db.Races.Count() + 1; race.IsRequest = true; var helper = new UsersHelper(); if (sender.Platform == MessengerPlatform.Vkontakte) { if (enemy.VkId == 0) { return("❌ Этот пользователь зарегестрирован через telegram. Гонки между платформами пока что недоступны."); } sender.Text($"🏁 Пользователь {helper.GetLink(creator)} приглашает Вас на гонку!" + $"\n ❓ Чтобы принять или отклонить гонку, откройте меню телефона в разделе гонок.", enemy.VkId); } else { if (enemy.TgId == 0) { return("❌ Этот пользователь зарегистрирован через ВКонтакте. Гонки между платформами пока что недоступны."); } sender.Text($"🏁 Пользователь {helper.GetLink(creator)} приглашает Вас на гонку!" + $"\n ❓ Чтобы принять или отклонить гонку, откройте меню телефона в разделе гонок.", enemy.TgId); } creator.Race = race.Id; db.Races.Add(race); db.SaveChanges(); UsersCommandHelper.GetHelper().Add("", creatorId); Task.Run(() => { Thread.Sleep(TimeSpan.FromSeconds(3)); var kb = new KeyboardBuilder(bot); kb.AddButton("❌ Отменить гонку", "racestop"); sender.Text("❓ Вы можете отменить гонку, если Ваш противник не принимает гонку.", msg.ChatId, kb.Build()); }); return("🏁 Мы отправили пользователю запрос о гонке с Вами. "); } }