private bool MemberRemove_Loaded(ChatType chatType, ChatMemberStatus status, ChatMember member) { if (member.Status is ChatMemberStatusCreator || member.Status is ChatMemberStatusAdministrator admin && !admin.CanBeEdited) { return(false); } if (member.UserId == ViewModel.CacheService.Options.MyId) { return(false); } if (chatType is ChatTypeBasicGroup && status is ChatMemberStatusAdministrator) { return(member.InviterUserId == ViewModel.CacheService.Options.MyId); } return(status is ChatMemberStatusCreator || status is ChatMemberStatusAdministrator administrator && administrator.CanRestrictMembers); }
private bool MemberRestrict_Loaded(ChatType chatType, ChatMemberStatus status, ChatMember member) { if (member.Status is ChatMemberStatusCreator || member.Status is ChatMemberStatusRestricted || member.Status is ChatMemberStatusAdministrator admin && !admin.CanBeEdited) { return(false); } if (member.UserId == ViewModel.CacheService.Options.MyId) { return(false); } if (chatType is ChatTypeSupergroup supergroup && supergroup.IsChannel) { return(false); } return(status is ChatMemberStatusCreator || status is ChatMemberStatusAdministrator administrator && administrator.CanRestrictMembers); }
public async Task CreateChatMemberAsync(Guid chatId, Guid memberId, ChatMemberStatus status = ChatMemberStatus.Pending, string publicKey = null) { try { var member = new ChatMember() { UserId = memberId, ChatId = chatId, Status = status, PublicKey = publicKey }; await _dbContext.ChatMembers.AddAsync(member); await _dbContext.SaveChangesAsync(); } catch (DbUpdateException ex) { throw new SlothException("Creating chat member failed", ex); } }
public static void Start(Update u, string[] args) { if (u.Message.Chat.Type == ChatType.Private && u.Message.From != null) { using (var db = new WWContext()) { var p = GetDBPlayer(u.Message.From.Id, db); if (p == null) { var usr = u.Message.From; p = new Player { UserName = usr.Username, Name = (usr.FirstName + " " + usr.LastName).Trim(), TelegramId = usr.Id, Language = "English" }; db.Players.Add(p); db.SaveChanges(); p = GetDBPlayer(u.Message.From.Id, db); } #if RELEASE p.HasPM = true; #elif RELEASE2 p.HasPM2 = true; #elif BETA p.HasDebugPM = true; #endif db.SaveChanges(); if (String.IsNullOrEmpty(args[1])) { var msg = $"Hi there! I'm @{Bot.Me.Username}, and I moderate games of Werewolf." + $"\nJoin the main group @werewolfgame, or to find a group to play in, you can use /grouplist." + $"\nFor role information, use /rolelist." + $"\nIf you want to set your default language, use /setlang." + $"\nBe sure to stop by <a href=\"https://telegram.me/werewolfsupport\">Werewolf Support</a> for any questions, and subscribe to @werewolfdev for updates from the developer." + $"\nMore infomation can be found <a href=\"https://www.tgwerewolf.com/?referrer=start\">here</a>!"; Bot.Send(msg, u.Message.Chat.Id); return; } if (args[1] == "donatetg") { GetDonationInfo(m: u.Message); return; } //okay, they are joining a game. string nodeid = ""; string gameid = ""; Models.Node node = null; Models.GameInfo game = null; ChatMemberStatus status = ChatMemberStatus.Creator; try { nodeid = args[1].Substring(0, 32); gameid = args[1].Substring(32); //try to get the guid of the game they want to join Guid g, n; if (!(Guid.TryParse(nodeid, out n) && Guid.TryParse(gameid, out g))) { return; } //first get the node where to search for the game for (var i = 0; i < 3; i++) { node = Bot.Nodes.ToList().FirstOrDefault(x => x.ClientId == n); if (node != null) { break; } } if (node == null) { //log it //Bot.Send($"{u.Message.From.Id} (@{u.Message.From.Username ?? ""}) didn't find node with guid {n.ToString()} while attempting to play in {g.ToString()}", -1001098399855); return; } //we have the node, get the game for (var i = 0; i < 5; i++) { game = node.Games.ToList().FirstOrDefault(x => x.Guid == g); if (game != null) { break; } } if (game == null) { //log it //Bot.Send($"{u.Message.From.Id} (@{u.Message.From.Username ?? ""}) found node with guid {n.ToString()} but not the game {g.ToString()}", -1001098399855); return; } //ok we got the game, now join //make sure they are member status = Bot.Api.GetChatMemberAsync(game.GroupId, u.Message.From.Id).Result.Status; if (status == ChatMemberStatus.Left || status == ChatMemberStatus.Kicked) { Bot.Send( GetLocaleString("NotMember", GetLanguage(u.Message.From.Id), game.ChatGroup.ToBold()), u.Message.Chat.Id); return; } game.AddPlayer(u); return; } catch (AggregateException e) { var ex = e.InnerExceptions[0]; while (ex.InnerException != null) { ex = ex.InnerException; } Send(ex.Message, u.Message.Chat.Id); Send($"Error in START:\n" + $"{u.Message.Text}\n" + $"Node: {nodeid}\n" + $"Game: {gameid}\n" + $"Found Node: {node?.ClientId}\n" + $"Found Game: {game?.Guid}\n" + $"Chat Member Status: {status}\n" + $"{ex.Message}\n{ex.StackTrace}", Settings.ErrorGroup); } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } Send(ex.Message, u.Message.Chat.Id); Send($"Error in START:\n" + $"{u.Message.Text}\n" + $"Node: {nodeid}\n" + $"Game: {gameid}\n" + $"Found Node: {node?.ClientId}\n" + $"Found Game: {game?.Guid}\n" + $"Chat Member Status: {status}\n" + $"{ex.Message}\n{ex.StackTrace}", Settings.ErrorGroup); } } } }
private void CreateFlyoutItem(ref MenuFlyout flyout, Func <ChatMemberStatus, ChatMember, Visibility> visibility, ICommand command, ChatMemberStatus status, object parameter, string text) { var value = visibility(status, parameter as ChatMember); if (value == Visibility.Visible) { var flyoutItem = new MenuFlyoutItem(); //flyoutItem.Loaded += (s, args) => flyoutItem.Visibility = visibility(parameter as TLMessageCommonBase); flyoutItem.Command = command; flyoutItem.CommandParameter = parameter; flyoutItem.Text = text; flyout.Items.Add(flyoutItem); } }
internal void FillUserInfo(string FirstName, string LastName, string Username, ChatMemberStatus Status) { this.FirstName = FirstName; this.LastName = LastName; this.Username = Username; this.Status = Status; Complete = true; }