Skype4Py:更改群聊成员的角色

时间:2013-07-04 06:42:06

标签: python skype4py

我有一个带命令的skypebot。我试图实现的命令之一是“promote_to_master”:

# chat is Skype4Py.chat.Chat object, user_string is str
def promote_to_master(self, chat, user_string):
    if self.is_creator_or_master(chat):
        for member in chat.Members:
            if member.Handle == user_string:
                logging.info("Member promoted")
                member.Role = Skype4Py.chatMemberRoleMaster

    return "Member promoted"

僵尸程序是MASTER,目标是USER。不会抛出任何错误,但聊天中的成员角色不会更改。我确实看到了日志条目。 print type(member)显示<class 'Skype4Py.user.User'>,似乎无法更改角色,但我不确定。

在群聊中,指挥官使用:!promote user 运行后,使用/whois user给出:

member: user
role: USER
subscribed: YES
banned: NO
online locations: [scrubbed]

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我需要两个额外的步骤才能到达我想要的地方:

  1. 当我需要chat.Members
  2. 时,我正在使用chat.MemberObjects
  3. 对于我的三重测试帐户,机器人必须是CREATOR。它可能与谁添加哪个用户有关。以前,我的机器人是MASTER,而user1是CREATOR。我不知道用户的AddedBy属性如何影响用户,但它做了一些事情。现在我的机器人是CREATOR,我可以影响其他用户的角色。

答案 1 :(得分:0)

我也有Skype机器人。
你可以这样做:

                        elif msg.startswith('!listener '):
                    debug.action('!listener command executed.')
                    string = msg.replace('!listener ', '', 1)
                    send('/setrole '+string+' listener')

然后做

                        elif msg.startswith('!helper '):
                    debug.action('!helper command executed.')
                    string = msg.replace('!helper ', '', 1)
                    send('/setrole '+string+' helper')

等等,这样你就可以在Skype上的聊天中键入命令,通过机器人降级/推广人员。

祝你好运:)