Functional programming 如何知道用户是否在线,只提供用户名/尼克/参与者,而不提供整个JID(Ejabberd)

Functional programming 如何知道用户是否在线,只提供用户名/尼克/参与者,而不提供整个JID(Ejabberd),functional-programming,erlang,xmpp,ejabberd,erlang-ports,Functional Programming,Erlang,Xmpp,Ejabberd,Erlang Ports,我正在定制模块mod_muc_room,我想添加一个功能,知道用户是否在线,但只提供用户名。在该模块中,我可以找到函数is\u user\u online: is_user_online(JID, StateData) -> LJID = jlib:jid_tolower(JID), ?DICT:is_key(LJID, StateData#state.users). 我知道我必须提供用户名、服务器和资源。LJID将导致类似于{“user”,“myserver.com”,“somei

我正在定制模块
mod_muc_room
,我想添加一个功能,知道用户是否在线,但只提供用户名。在该模块中,我可以找到函数
is\u user\u online

is_user_online(JID, StateData) ->

LJID = jlib:jid_tolower(JID),

?DICT:is_key(LJID, StateData#state.users).
我知道我必须提供用户名、服务器和资源。LJID将导致类似于
{“user”,“myserver.com”,“someid”}

我想添加一个函数,该函数返回相同的值,但只提供“用户”之类的值

User = "user",

is_member_online(User, StateData) ->

?DICT:is_key(User, StateData#state.users).

关于如何实现这一点,我可以提供一些建议吗?

您可以使用此信息获取主机列表:

ejabberd\u配置:获取全局选项(主机)

然后使用此选项检查用户是否在线:

ejabberd\u sm:获取用户资源(用户、主机)

如果用户脱机,这将返回一个空数组