From 7c60ecfc27b196dc4dd35b3679099a6a1011ade4 Mon Sep 17 00:00:00 2001 From: hintswen Date: Sat, 22 Dec 2018 12:05:17 +1100 Subject: [PATCH] Group notice event Added group notice event for Issue #15 Includes a little tidy-up by Casper --- example/testBot.js | 9 ++++++++- lib/classes/ClientEvents.ts | 2 ++ lib/classes/Comms.ts | 13 +++++++++++++ lib/events/GroupNoticeEvent.ts | 10 ++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 lib/events/GroupNoticeEvent.ts diff --git a/example/testBot.js b/example/testBot.js index 6491222..503a0f5 100644 --- a/example/testBot.js +++ b/example/testBot.js @@ -161,6 +161,13 @@ bot.clientEvents.onGroupChat.subscribe(async (GroupChatEvent) => } }); +bot.clientEvents.onGroupNotice.subscribe(async(GroupNoticeEvent) => +{ + console.log('Group notice from ' + GroupNoticeEvent.fromName + ' (' + GroupNoticeEvent.from + '), from group ID ' + GroupNoticeEvent.groupID); + console.log('Subject: ' + GroupNoticeEvent.subject); + console.log('Message: ' + GroupNoticeEvent.message); +}); + bot.clientEvents.onGroupInvite.subscribe(async (GroupInviteEvent) => { @@ -364,4 +371,4 @@ process.on('SIGUSR1', exitHandler.bind(null, {exit:true})); process.on('SIGUSR2', exitHandler.bind(null, {exit:true})); //catches uncaught exceptions -process.on('uncaughtException', exitHandler.bind(null, {exit:true})); \ No newline at end of file +process.on('uncaughtException', exitHandler.bind(null, {exit:true})); diff --git a/lib/classes/ClientEvents.ts b/lib/classes/ClientEvents.ts index 53c66f3..4bfeda6 100644 --- a/lib/classes/ClientEvents.ts +++ b/lib/classes/ClientEvents.ts @@ -4,6 +4,7 @@ import { FriendRequestEvent, FriendResponseEvent, GroupChatEvent, + GroupNoticeEvent, GroupChatSessionAgentListEvent, GroupChatSessionJoinEvent, GroupInviteEvent, @@ -38,6 +39,7 @@ export class ClientEvents onDisconnected: Subject = new Subject(); onCircuitLatency: Subject = new Subject(); onGroupChat: Subject = new Subject(); + onGroupNotice: Subject = new Subject(); onGroupChatSessionJoin: Subject = new Subject(); onGroupChatAgentListUpdate: Subject = new Subject(); onFriendResponse: Subject = new Subject(); diff --git a/lib/classes/Comms.ts b/lib/classes/Comms.ts index 2464df3..acc5ba0 100644 --- a/lib/classes/Comms.ts +++ b/lib/classes/Comms.ts @@ -14,6 +14,7 @@ import { FriendRequestEvent, FriendResponseEvent, GroupChatEvent, + GroupNoticeEvent, GroupInviteEvent, InstantMessageEvent, InstantMessageEventFlags, @@ -23,6 +24,7 @@ import { UUID } from '..'; import {ScriptDialogMessage} from './messages/ScriptDialog'; +import * as uuid from 'uuid'; export class Comms { @@ -158,6 +160,17 @@ export class Comms case InstantMessageDialog.FromTaskAsAlert: break; case InstantMessageDialog.GroupNotice: + const groupNoticeEvent = new GroupNoticeEvent(); + groupNoticeEvent.from = im.AgentData.AgentID; + groupNoticeEvent.fromName = Utils.BufferToStringSimple(im.MessageBlock.FromAgentName); + groupNoticeEvent.groupID = new UUID(im.MessageBlock.BinaryBucket, 2); + const message = Utils.BufferToStringSimple(im.MessageBlock.Message).split('|'); + groupNoticeEvent.subject = message[0]; + if (message.length > 1) + { + groupNoticeEvent.message = message[1]; + } + this.clientEvents.onGroupNotice.next(groupNoticeEvent); break; case InstantMessageDialog.GroupNoticeInventoryAccepted: break; diff --git a/lib/events/GroupNoticeEvent.ts b/lib/events/GroupNoticeEvent.ts new file mode 100644 index 0000000..2c56e7b --- /dev/null +++ b/lib/events/GroupNoticeEvent.ts @@ -0,0 +1,10 @@ +import {UUID} from '..'; + +export class GroupNoticeEvent +{ + groupID: UUID; + from: UUID; + fromName: string; + subject: string; + message: string; +}