当用户加入房间时,如何将没有隶属关系的用户直接设置为成员 - Ejabberd
Posted
技术标签:
【中文标题】当用户加入房间时,如何将没有隶属关系的用户直接设置为成员 - Ejabberd【英文标题】:How can I set an user with none affiliation directly to be a member when the user joins the room - Ejabberd 【发布时间】:2014-02-16 15:40:43 【问题描述】:我正在自定义模块 mod_muc_room 以在用户第一次加入时自动将用户的从属关系设置为成员。
我正在研究方法 process_pressence,我设法在 mysql 表 mod_muc 的配置室中添加用户,但 StateData 不包含此更改....如何正确使此更改可用于 StateData。
我想知道一些指针。我已经尝试了很多方法黑客,但我似乎迷路了......提前谢谢
【问题讨论】:
【参考方案1】:http://www.process-one.net/docs/ejabberd/guide_en.html#modmuc
在default_room_options
中将members_by_default
设置为true 怎么样?
编辑:
我对角色和隶属关系感到困惑,请尝试以下补丁:
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -1611,7 +1611,11 @@ add_online_user(JID, Nick, Role, StateData) ->
end,
[LJID], StateData#state.nicks),
tab_add_online_user(JID, StateData),
- StateData#stateusers = Users, nicks = Nicks.
+ StateData1 = case get_affiliation(JID, StateData) of
+ owner -> StateData;
+ _ -> set_affiliation(JID, member, StateData)
+ end,
+ StateData1#stateusers = Users, nicks = Nicks.
【讨论】:
moderate, true, members_by_default, true, members_only, false, allow_user_invites, false, password_protected, false, captcha_protected, false, password, [] , anonymous, true, logging, false, max_users, 200, allow_voice_requests, true, voice_request_min_interval, 1800, captcha_whitelist, [], affiliations, ["gallero", "dev .here.com", [], owner, []], subject, [], subject_author, []] | 2014-01-31 14:57:25 --------------- Muc 选项看起来像这些,但我需要参与者直接拥有会员隶属关系,无需所有者添加跨度> 如果可以自定义mod_muc_room.erl
,想办法让Affiliation
变成add_new_user()
中的member
。你可以找到优雅的方式,或者只是做Affiliation = member
。我只是阅读了代码并提出了建议,没有进行测试。
对不起,我对角色和隶属关系感到困惑。我将编辑我的第一个答案。
我在做几乎相同的情况,但在处理新的存在后最后使用单独的方法,但这似乎有效!以上是关于当用户加入房间时,如何将没有隶属关系的用户直接设置为成员 - Ejabberd的主要内容,如果未能解决你的问题,请参考以下文章