Inspired by node-red-contrib-discord
Node-red nodes that allow you to interact with Discord, via Discord.js. Can be used to implement simple write/read Bots
Run the following command in ~/.node-red
:
npm install node-red-node-discord
node-red-node-discord gives you access to following nodes:
- discord-get-messages is a node with no inputs and one output allowing you to receive notifications of incoming messages.
- discord-get-emoji-reactions is a node with no inputs and one output allowing you to receive notifications when user reacts on message with emoji.
- discord-send-messages is a node with one input and no outputs allowing you to send messages to a Discord channel.
- discord-members-monitoring is a node with one input and output, designed to get all channels and their's members for metrics.
- Triggers whenever a message was received on Discord
- You can pass list of channels to listen to
Note : valid channel list example
#1245#general#1234567#another-channel
msg.payload
will be set to the textual content of the messagemsg.channel
will be set to an Object containing info on the channel the message was received from (does not contain any discord.js functions)msg.author
will be set to an Object containing info on the user that sent the message (does not contain any discord.js functions)msg.attachments
will be set toArray
containing attachments info in format
{
filename: string, // Filename
href: string // File Url generated by Discord
}
msg.rawData
will be set to an Object containing info on the message that was received, but again without any of the discord.js functions- To reply to a message, use the
discord-send-messages
node.
-
Sends
msg.payload
on Discord channel with idmsg.channel
You can pass channel name inmsg.channel
as well as id, i.e.general
Note: this feature possibly can cause sending message to wrong channel if bot connected to multiple servers and there are same named channels -
Feel free to @mention people in
message.payload
Example:Hello @Gago, nice module :)
, also you can use@here, @everyone
mentions -
To use discord's rich text embed specify
msg.rich
with following content (props marked with ? are not required){ title?: string; description?: string; url?: string; color?: ColorResolvable; timestamp?: number | Date; footer?: { icon?: string; text: string; }; thumbnail?: string; author: { name: string; icon?: string; url?: string; }; attachments?: Attachment[]; field?: { name: string; value: string; inline?: boolean; }; fields?: [ { name: string; value: string; inline?: boolean; } ]; }
-
msg.attachments
contains attachments to send, it must be array containing objects in format{ name: string; file: string | Buffer | Stream; }
- Triggered from outside, for now doesn't provide any configuration options
- Set's monitored data to
msg.monitoringData
with following content
{ [category: string]: [ { id: string; channelName: string; members: [ { id: string; username: string; joinedDate: Date; permissions: PermissionString[]; roles: [ { id: string; name: string; permissions: number; } ] } ] } ] }