summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/util/entities/Channel.ts19
-rw-r--r--src/util/util/InvisibleCharacters.ts11
2 files changed, 20 insertions, 10 deletions
diff --git a/src/util/entities/Channel.ts b/src/util/entities/Channel.ts

index a576d7af..28c36e7e 100644 --- a/src/util/entities/Channel.ts +++ b/src/util/entities/Channel.ts
@@ -4,7 +4,7 @@ import { BaseClass } from "./BaseClass"; import { Guild } from "./Guild"; import { PublicUserProjection, User } from "./User"; import { HTTPError } from "../util/imports/HTTPError"; -import { containsAll, emitEvent, getPermission, Snowflake, trimSpecial, InvisibleCharacters } from "../util"; +import { containsAll, emitEvent, getPermission, Snowflake, trimSpecial, InvisibleCharacters, ChannelTypes } from "../util"; import { ChannelCreateEvent, ChannelRecipientRemoveEvent } from "../interfaces"; import { Recipient } from "./Recipient"; import { Message } from "./Message"; @@ -183,11 +183,20 @@ export class Channel extends BaseClass { if (channel.name.includes(character)) throw new HTTPError("Channel name cannot include invalid characters", 403); - if (channel.name.match(/\-\-+/g)) - throw new HTTPError("Channel name cannot include multiple adjacent dashes.", 403); + // Categories skip these checks on discord.com + if (channel.type !== ChannelType.GUILD_CATEGORY || guild.features.includes("IRC_LIKE_CATEGORY_NAMES")) { + if (channel.name.includes(" ")) + throw new HTTPError("Channel name cannot include invalid characters", 403); + + if (channel.name.match(/\-\-+/g)) + throw new HTTPError("Channel name cannot include multiple adjacent dashes.", 403); - if (channel.name.charAt(0) === "-" || channel.name.charAt(channel.name.length - 1) === "-") - throw new HTTPError("Channel name cannot start/end with dash.", 403); + if (channel.name.charAt(0) === "-" || + channel.name.charAt(channel.name.length - 1) === "-") + throw new HTTPError("Channel name cannot start/end with dash.", 403); + } + else + channel.name = channel.name.trim(); //category names are trimmed client side on discord.com } if (!guild.features.includes("ALLOW_UNNAMED_CHANNELS")) { diff --git a/src/util/util/InvisibleCharacters.ts b/src/util/util/InvisibleCharacters.ts
index 2b014e14..a58c8c7c 100644 --- a/src/util/util/InvisibleCharacters.ts +++ b/src/util/util/InvisibleCharacters.ts
@@ -1,9 +1,10 @@ // List from https://invisible-characters.com/ export const InvisibleCharacters = [ '\u{9}', //Tab - '\u{20}', //Space + '\u{c}', //Form feed + //'\u{20}', //Space //categories can have spaces in them '\u{ad}', //Soft hyphen - '\u{34f}', //Combining grapheme joiner + // '\u{34f}', //Combining grapheme joiner '\u{61c}', //Arabic letter mark '\u{115f}', //Hangul choseong filler '\u{1160}', //Hangul jungseong filler @@ -23,12 +24,12 @@ export const InvisibleCharacters = [ '\u{200a}', //Hair space '\u{200b}', //Zero width space '\u{200c}', //Zero width non-joiner - '\u{200d}', //Zero width joiner + // '\u{200d}', //Zero width joiner '\u{200e}', //Left-to-right mark '\u{200f}', //Right-to-left mark '\u{202f}', //Narrow no-break space '\u{205f}', //Medium mathematical space - '\u{2060}', //Word joiner + // '\u{2060}', //Word joiner -- WJ is required in some languages that don't use spaces to split words '\u{2061}', //Function application '\u{2062}', //Invisible times '\u{2063}', //Invisible separator @@ -53,4 +54,4 @@ export const InvisibleCharacters = [ '\u{1d178}', //Musical symbol end slur '\u{1d179}', //Musical symbol begin phrase '\u{1d17a}' //Musical symbol end phrase -]; \ No newline at end of file +];