2022-09-18 00:01:06 +00:00
require 'dotenv/load'
require 'discordrb'
bot = Discordrb :: Bot . new token : ENV [ 'DISCORD_TOKEN' ]
EMOJI = '🔖'
2022-09-18 00:01:54 +00:00
TRIM_MESSAGE_LENGTH = 500
2022-09-18 00:01:06 +00:00
bot . reaction_add do | event |
return nil unless event . emoji . name == EMOJI
# extract data of the message's author
message_author = event . message . author
message_author_pfp = message_author . avatar_url 'png'
message_author_nickname = message_author . display_name
message_author_distinct = message_author . distinct
message_author_fname = " #{ message_author_nickname } ( #{ message_author_distinct } ) " # this is the 'author' field of the embed
2022-09-18 00:01:54 +00:00
trimmed_msg = " #{ event . message . content [ 0 .. TRIM_MESSAGE_LENGTH ] } #{ '...' if event . message . content . length > TRIM_MESSAGE_LENGTH } " # trim the string to TRIM_MESSAGE_LENGTH chars max to not make the embed too huge
2022-09-18 00:01:06 +00:00
original_msg_link = event . message . link
pm = event . user . pm
pm . send_embed 'Bookmark created!' do | embed |
embed . title = 'Go to message'
embed . url = original_msg_link
embed . author = Discordrb :: Webhooks :: EmbedAuthor . new ( icon_url : message_author_pfp , name : message_author_fname )
embed << Discordrb :: Webhooks :: EmbedField . new ( name : 'Message (trimmed)' , value : trimmed_msg )
embed . timestamp = event . message . timestamp
end
nil # `event` is of type Respondable, so the return line of the block needs to be nil to prevent the bot sending something in the chhannel the reaction occured.
end
bot . run