Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(Message): #system non-zero message types are not guaranteed to be system #5108

Merged
merged 6 commits into from Dec 12, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/structures/Message.js
Expand Up @@ -10,7 +10,7 @@ const ReactionCollector = require('./ReactionCollector');
const { Error, TypeError } = require('../errors');
const ReactionManager = require('../managers/ReactionManager');
const Collection = require('../util/Collection');
const { MessageTypes } = require('../util/Constants');
const { MessageTypes, SystemMessageTypes } = require('../util/Constants');
const MessageFlags = require('../util/MessageFlags');
const Permissions = require('../util/Permissions');
const SnowflakeUtil = require('../util/Snowflake');
Expand Down Expand Up @@ -62,7 +62,7 @@ class Message extends Base {
* Whether or not this message was sent by Discord, not actually a user (e.g. pin notifications)
* @type {?boolean}
*/
this.system = data.type !== 0;
this.system = SystemMessageTypes.includes(this.type);
} else if (typeof this.type !== 'string') {
this.system = null;
this.type = null;
Expand Down
8 changes: 8 additions & 0 deletions src/util/Constants.js
Expand Up @@ -429,6 +429,14 @@ exports.MessageTypes = [
'REPLY',
];

/**
* The types of messages that are `System`. The available types are `MessageTypes` excluding:
* * DEFAULT
* * REPLY
* @typedef {string} SystemMessageType
*/
exports.SystemMessageTypes = exports.MessageTypes.filter(type => type && type !== 'DEFAULT' && type !== 'REPLY');

/**
* <info>Bots cannot set a `CUSTOM_STATUS`, it is only for custom statuses received from users</info>
* The type of an activity of a users presence, e.g. `PLAYING`. Here are the available types:
Expand Down
3 changes: 3 additions & 0 deletions typings/index.d.ts
Expand Up @@ -516,6 +516,7 @@ declare module 'discord.js' {
BIG: 2;
};
MessageTypes: MessageType[];
SystemMessageTypes: SystemMessageType[];
ActivityTypes: ActivityType[];
ExplicitContentFilterLevels: ExplicitContentFilterLevel[];
DefaultMessageNotifications: DefaultMessageNotifications[];
Expand Down Expand Up @@ -3148,6 +3149,8 @@ declare module 'discord.js' {

type SystemChannelFlagsResolvable = BitFieldResolvable<SystemChannelFlagsString>;

type SystemMessageType = Exclude<MessageType, 'DEFAULT' | 'REPLY'>;

type TargetUser = number;

interface TypingData {
Expand Down