@@ -8,6 +8,10 @@ import { addUsersToRoomMethod } from '../../lib/server/methods/addUsersToRoom';
88import { settings } from '../../settings/server' ;
99import { slashCommands } from '../../utils/server/slashCommand' ;
1010
11+ const isFederatedUsername = ( username : string ) => {
12+ return username . includes ( '@' ) && username . includes ( ':' ) ;
13+ } ;
14+
1115/*
1216 * Invite is a named function that will replace /invite commands
1317 * @param {Object } message - The message object
@@ -17,16 +21,12 @@ slashCommands.add({
1721 callback : async ( { params, message, userId } : SlashCommandCallbackParams < 'invite' > ) : Promise < void > => {
1822 const usernames = params
1923 . split ( / [ \s , ] / )
20- . map ( ( username ) => username . replace ( / ( ^ @ ) | ( @ ) / , '' ) )
24+ . map ( ( username ) => ( isFederatedUsername ( username ) ? username : username . replace ( / ( ^ @ ) | ( @ ) / , '' ) ) )
2125 . filter ( ( a ) => a !== '' ) ;
2226 if ( usernames . length === 0 ) {
2327 return ;
2428 }
25- const users = await Users . find ( {
26- username : {
27- $in : usernames ,
28- } ,
29- } ) . toArray ( ) ;
29+ const users = await Users . findByUsernames ( usernames ) . toArray ( ) ;
3030 if ( users . length === 0 ) {
3131 void api . broadcast ( 'notify.ephemeralMessage' , userId , message . rid , {
3232 msg : i18n . t ( 'User_doesnt_exist' , {
@@ -81,7 +81,12 @@ slashCommands.add({
8181 if ( typeof error !== 'string' ) {
8282 return ;
8383 }
84- if ( error === 'cant-invite-for-direct-room' ) {
84+
85+ if ( error === 'error-federated-users-in-non-federated-rooms' ) {
86+ void api . broadcast ( 'notify.ephemeralMessage' , userId , message . rid , {
87+ msg : i18n . t ( 'You_cannot_add_external_users_to_non_federated_room' , { lng : settings . get ( 'Language' ) || 'en' } ) ,
88+ } ) ;
89+ } else if ( error === 'cant-invite-for-direct-room' ) {
8590 void api . broadcast ( 'notify.ephemeralMessage' , userId , message . rid , {
8691 msg : i18n . t ( 'Cannot_invite_users_to_direct_rooms' , { lng : settings . get ( 'Language' ) || 'en' } ) ,
8792 } ) ;
0 commit comments