Skip to content

Commit edf3502

Browse files
committed
feat(parser): add parsing of highlighted messages
1 parent 812ad95 commit edf3502

16 files changed

Lines changed: 55 additions & 29 deletions

File tree

d.ts/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ interface ParserOptions {
172172
emotesOffsets: Map<string, string[]>
173173
discord: { author: DiscordJsUser; channel: DiscordJsTextChannel } | undefined
174174
isAction: boolean,
175+
isHighlight: boolean,
175176
isFirstTimeMessage: boolean,
176177
parameters: string;
177178
message: string;

d.ts/src/parser.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export interface CommandOptions {
1616
command: string;
1717
parameters: string;
1818
isAction: boolean,
19+
isHighlight: boolean,
1920
isFirstTimeMessage: boolean,
2021
createdAt: number;
2122
attr: {

src/filters/command.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ const command: ResponseFilter = {
4545
// run custom commands
4646
if (customcommands.enabled) {
4747
await customcommands.run({
48-
sender: (attr.sender as ParserOptions['sender']), id: 'null', skip: false, message: cmd, parameters: attr.param ?? '', processedCommands: attr.processedCommands, parser: new Parser(), isAction: false, emotesOffsets: new Map(), discord: undefined, isParserOptions: true, isFirstTimeMessage: false,
48+
sender: (attr.sender as ParserOptions['sender']), id: 'null', skip: false, message: cmd, parameters: attr.param ?? '', processedCommands: attr.processedCommands, parser: new Parser(), isAction: false, isHighlight: false, emotesOffsets: new Map(), discord: undefined, isParserOptions: true, isFirstTimeMessage: false,
4949
});
5050
}
5151
// run alias
5252
if (alias.enabled) {
5353
await alias.run({
54-
sender: (attr.sender as ParserOptions['sender']), id: 'null', skip: false, message: cmd, parameters: attr.param ?? '', parser: new Parser(), isAction: false, emotesOffsets: new Map(), discord: undefined, isParserOptions: true, isFirstTimeMessage: false,
54+
sender: (attr.sender as ParserOptions['sender']), id: 'null', skip: false, message: cmd, parameters: attr.param ?? '', parser: new Parser(), isAction: false, isHighlight: false, emotesOffsets: new Map(), discord: undefined, isParserOptions: true, isFirstTimeMessage: false,
5555
});
5656
}
5757
await new Parser().command(attr.sender, cmd, true);
@@ -79,13 +79,13 @@ const command: ResponseFilter = {
7979
// run custom commands
8080
if (customcommands.enabled) {
8181
await customcommands.run({
82-
sender: (attr.sender as ParserOptions['sender']), id: 'null', skip: false, message: cmd, parameters: attr.param ?? '', processedCommands: attr.processedCommands, parser: new Parser(), isAction: false, emotesOffsets: new Map(), discord: undefined, isParserOptions: true, isFirstTimeMessage: false,
82+
sender: (attr.sender as ParserOptions['sender']), id: 'null', skip: false, message: cmd, parameters: attr.param ?? '', processedCommands: attr.processedCommands, parser: new Parser(), isAction: false, isHighlight: false, emotesOffsets: new Map(), discord: undefined, isParserOptions: true, isFirstTimeMessage: false,
8383
});
8484
}
8585
// run alias
8686
if (alias.enabled) {
8787
await alias.run({
88-
sender: (attr.sender as ParserOptions['sender']), id: 'null', skip: false, message: cmd, parameters: attr.param ?? '', parser: new Parser(), isAction: false, emotesOffsets: new Map(), isFirstTimeMessage: false, discord: undefined, isParserOptions: true,
88+
sender: (attr.sender as ParserOptions['sender']), id: 'null', skip: false, message: cmd, parameters: attr.param ?? '', parser: new Parser(), isAction: false, isHighlight: false,emotesOffsets: new Map(), isFirstTimeMessage: false, discord: undefined, isParserOptions: true,
8989
});
9090
}
9191
const responses = await new Parser().command(attr.sender, cmd, true);

src/helpers/events/cheer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ export async function cheer(event: EventSubChannelCheerEventData) {
8181
if (price.priceBits <= bits) {
8282
if (customcommands.enabled) {
8383
await customcommands.run({
84-
sender: getUserSender(userId, username), id: 'null', skip: true, quiet: false, message: messageFromUser.trim().toLowerCase(), parameters: '', parser: new Parser(), isAction: false, emotesOffsets: new Map(), isFirstTimeMessage: false, discord: undefined, isParserOptions: true,
84+
sender: getUserSender(userId, username), id: 'null', skip: true, quiet: false, message: messageFromUser.trim().toLowerCase(), parameters: '', parser: new Parser(), isAction: false, emotesOffsets: new Map(), isFirstTimeMessage: false, isHighlight: false, discord: undefined, isParserOptions: true,
8585
});
8686
}
8787
if (alias.enabled) {
8888
await alias.run({
89-
sender: getUserSender(userId, username), id: 'null', skip: true, message: messageFromUser.trim().toLowerCase(), parameters: '', parser: new Parser(), isAction: false, emotesOffsets: new Map(), isFirstTimeMessage: false, discord: undefined, isParserOptions: true,
89+
sender: getUserSender(userId, username), id: 'null', skip: true, message: messageFromUser.trim().toLowerCase(), parameters: '', parser: new Parser(), isAction: false, emotesOffsets: new Map(), isFirstTimeMessage: false, isHighlight: false, discord: undefined, isParserOptions: true,
9090
});
9191
}
9292
const responses = await new Parser().command(getUserSender(userId, username), messageFromUser, true);

src/overlays/texttospeech.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { v4 } from 'uuid';
22

3+
import Overlay from './_interface';
34
import {
45
command, default_permission,
56
} from '../decorators';
67
import { warning } from '../helpers/log';
7-
import Overlay from './_interface';
88

99
import defaultPermissions from '~/helpers/permissions/defaultPermissions';
1010

@@ -24,7 +24,7 @@ class TextToSpeech extends Overlay {
2424

2525
this.emit('speak', {
2626
text: opts.parameters,
27-
highlight: opts.attr.highlight,
27+
highlight: opts.isHighlight,
2828
service: tts.service,
2929
key,
3030
});

src/panel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ class Panel extends Core {
422422
return true;
423423
}
424424
setValue({
425-
sender: getOwnerAsSender(), createdAt: 0, command: '', parameters: value + ' ' + index, attr: { quiet: data._quiet }, isAction: false, emotesOffsets: new Map(), isFirstTimeMessage: false, discord: undefined,
425+
sender: getOwnerAsSender(), createdAt: 0, command: '', parameters: value + ' ' + index, attr: { quiet: data._quiet }, isAction: false, isHighlight: false, emotesOffsets: new Map(), isFirstTimeMessage: false, discord: undefined,
426426
});
427427
});
428428
});

src/parser.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class Parser {
3333
started_at = Date.now();
3434
message = '';
3535
isAction = false;
36+
isHighlight = false;
3637
isFirstTimeMessage = false;
3738
sender: CommandOptions['sender'] | null = null;
3839
discord: CommandOptions['discord'] = undefined;
@@ -50,6 +51,7 @@ class Parser {
5051
this.skip = opts.skip || false;
5152
this.isAction = opts.isAction || false;
5253
this.isFirstTimeMessage = opts.isFirstTimeMessage || false;
54+
this.isHighlight = opts.isHighlight || false;
5355
this.quiet = opts.quiet || false;
5456
this.successfullParserRuns = [];
5557
}
@@ -82,6 +84,7 @@ class Parser {
8284
id: this.id,
8385
emotesOffsets: this.emotesOffsets,
8486
isAction: this.isAction,
87+
isHighlight: this.isHighlight,
8588
isFirstTimeMessage: this.isFirstTimeMessage,
8689
sender: this.sender,
8790
discord: this.discord ?? undefined,
@@ -115,6 +118,7 @@ class Parser {
115118
discord: this.discord ?? undefined,
116119
emotesOffsets: this.emotesOffsets,
117120
isAction: this.isAction,
121+
isHighlight: this.isHighlight,
118122
isFirstTimeMessage: this.isFirstTimeMessage,
119123
message: this.message.trim(),
120124
parameters: text.trim(),
@@ -295,6 +299,7 @@ class Parser {
295299
discord: this.discord ?? undefined,
296300
emotesOffsets: this.emotesOffsets,
297301
isAction: this.isAction,
302+
isHighlight: this.isHighlight,
298303
isFirstTimeMessage: this.isFirstTimeMessage,
299304
command: command.command,
300305
parameters: text.trim(),

src/plugins/Sandbox.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ export const runScriptInSandbox = (plugin: Plugin,
117117
createdAt: Date.now(),
118118
emotesOffsets: new Map(),
119119
isFirstTimeMessage: false,
120+
isHighlight: false,
120121
isAction: false,
121122
sender: getUserSender(getBotId(), getBotUserName()),
122123
parameters,

src/services/twitch/chat.ts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import util from 'util';
2+
23
import type { EmitData } from '@entity/alert';
34
import { Currency } from '@entity/user';
45
import * as constants from '@sogebot/ui-helpers/constants';
@@ -326,7 +327,7 @@ class Chat {
326327
return;
327328
}
328329
this.message({
329-
userstate: msg.userInfo, message, isWhisper: true, emotesOffsets: msg.emoteOffsets, isAction: false,
330+
userstate: msg.userInfo, message, isWhisper: true, emotesOffsets: msg.emoteOffsets, isAction: false, isHighlight: false,
330331
});
331332
linesParsedIncrement();
332333
});
@@ -399,7 +400,12 @@ class Chat {
399400
}
400401

401402
this.message({
402-
userstate, message, id: msg.id, emotesOffsets: msg.emoteOffsets, isAction: false, isFirstTimeMessage: msg.tags.get('first-msg') === '1',
403+
userstate, message,
404+
id: msg.id,
405+
emotesOffsets: msg.emoteOffsets,
406+
isAction: false,
407+
isFirstTimeMessage: msg.tags.get('first-msg') === '1',
408+
isHighlight: msg.isHighlight,
403409
}).then(() => {
404410
linesParsedIncrement();
405411
triggerInterfaceOnMessage({
@@ -720,7 +726,7 @@ class Chat {
720726
}
721727

722728
@timer()
723-
async message (data: { skip?: boolean, quiet?: boolean, message: string, userstate: ChatUser, id?: string, isWhisper?: boolean, emotesOffsets?: Map<string, string[]>, isAction: boolean, isFirstTimeMessage?: boolean }) {
729+
async message (data: { skip?: boolean, quiet?: boolean, message: string, userstate: ChatUser, id?: string, isHighlight?: boolean, isWhisper?: boolean, emotesOffsets?: Map<string, string[]>, isAction: boolean, isFirstTimeMessage?: boolean }) {
724730
data.emotesOffsets ??= new Map();
725731
data.isAction ??= false;
726732
data.isFirstTimeMessage ??= false;
@@ -738,7 +744,15 @@ class Chat {
738744
}
739745

740746
const parse = new Parser({
741-
sender: userstate, message: message, skip: skip, quiet: quiet, id: data.id, emotesOffsets: data.emotesOffsets, isAction: data.isAction, isFirstTimeMessage: data.isFirstTimeMessage,
747+
sender: userstate,
748+
message: message,
749+
skip: skip,
750+
quiet: quiet,
751+
id: data.id,
752+
emotesOffsets: data.emotesOffsets,
753+
isAction: data.isAction,
754+
isFirstTimeMessage: data.isFirstTimeMessage,
755+
isHighlight: data.isHighlight,
742756
});
743757

744758
const whisperListener = variables.get('services.twitch.whisperListener') as boolean;
@@ -767,7 +781,11 @@ class Chat {
767781
&& (whisperListener || isOwner(userstate))) {
768782
whisperIn(`${message} [${userName}${additionalInfo.length > 1 ? additionalInfo : ''}]`);
769783
} else if (!skip && !isBotId(userId)) {
770-
chatIn(`${message} [${userName}${additionalInfo.length > 1 ? additionalInfo : ''}]`);
784+
if (data.isHighlight) {
785+
chatIn(`**${message}** [${userName}${additionalInfo.length > 1 ? additionalInfo : ''}]`);
786+
} else {
787+
chatIn(`${message} [${userName}${additionalInfo.length > 1 ? additionalInfo : ''}]`);
788+
}
771789
}
772790

773791
if (commandRegexp.test(message)) {

src/systems/commercial.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class Commercial extends System {
3232
createdAt: Date.now(),
3333
emotesOffsets: new Map(),
3434
isAction: false,
35+
isHighlight: false,
3536
isFirstTimeMessage: false,
3637
discord: undefined,
3738
});

0 commit comments

Comments
 (0)