示例#1
0
        private static bool PermCheck(ChatMember user, ChatMemberPerms perm)
        {
            switch (perm)
            {
            case ChatMemberPerms.CanBeEdited: { return(user.can_be_edited ? true : false); }

            case ChatMemberPerms.CanPostMessages: { return(user.can_post_messages ? true : false); }

            case ChatMemberPerms.CanEditMessages: { return(user.can_edit_messages ? true : false); }

            case ChatMemberPerms.CanDeleteMessages: { return(user.can_delete_messages ? true : false); }

            case ChatMemberPerms.CanRestrictMembers: { return(user.can_restrict_members ? true : false); }

            case ChatMemberPerms.CanPromoteMembers: { return(user.can_promote_members ? true : false); }

            case ChatMemberPerms.CanChangeInfo: { return(user.can_change_info ? true : false); }

            case ChatMemberPerms.CanInviteUsers: { return(user.can_invite_users ? true : false); }

            case ChatMemberPerms.CanPinMessages: { return(user.can_pin_messages ? true : false); }

            case ChatMemberPerms.CanSendMessages: { return(user.can_send_messages ? true : false); }

            case ChatMemberPerms.CanSendMedia: { return(user.can_send_media_messages ? true : false); }

            case ChatMemberPerms.CanSendPolls: { return(user.can_send_polls ? true : false); }

            case ChatMemberPerms.CanSendOther: { return(user.can_send_other_messages ? true : false); }

            case ChatMemberPerms.CanAddWebPagePreviews: { return(user.can_add_web_page_previews ? true : false); }

            default: return(false);
            }
        }
示例#2
0
        public static bool CheckMemberPermission(long userID, long chatID, ChatMemberPerms perm)
        {
            ChatCache chat = ChatCaching.GetCache(chatID);

            if ((EpochTime() - ToEpoch(chat.LastUpdate)) >= Configs.RunningConfig.ChatCacheTimer)
            {
                ChatCaching.UpdateCache(chat);
            }

            if (chat.Admins.ContainsKey(userID))
            {
                ChatMember admin = chat.Admins[userID];
                if (admin.status == "creator")
                {
                    return(true);
                }
                if (admin.status == "administrator")
                {
                    return(PermCheck(admin, perm));
                }
            }
            else
            {
                Result <ChatMember> memberResult = Methods.getChatMember(chatID, userID);
                if (!memberResult.ok)
                {
                    Logger.LogWarn("There was an error while getting the permission for " + userID + " in chat " + chatID + "\nError: (" + memberResult.errorCode + ") Description: " + memberResult.description);
                    return(false);
                }
                else
                {
                    ChatMember member = memberResult.result;
                    if (!member.is_member)
                    {
                        return(false);
                    }
                    if (member.status == "left")
                    {
                        return(false);
                    }
                    if (member.status == "kicked")
                    {
                        return(false);
                    }
                    if (member.status == "restricted")
                    {
                        return(PermCheck(member, perm));
                    }
                    if (member.status == "member")
                    {
                        return(PermCheck(member, perm));
                    }
                }
            }
            return(false);
        }