forked from yagich/potomark-bot-rb
Merge pull request 'add support for pinning and unpinning' (#1) from mud/potomark-bot-rb:feature/pinning into main
Reviewed-on: yagich/potomark-bot-rb#1
This commit is contained in:
commit
89a36914db
52
bot.rb
52
bot.rb
@ -3,32 +3,48 @@ require 'discordrb'
|
||||
|
||||
bot = Discordrb::Bot.new token: ENV['DISCORD_TOKEN']
|
||||
|
||||
EMOJI = '🔖'
|
||||
BOOKMARK_EMOJI = '🔖'
|
||||
PIN_EMOJI = '📌'
|
||||
|
||||
TRIM_MESSAGE_LENGTH = 500
|
||||
|
||||
bot.reaction_add do |event|
|
||||
next 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
|
||||
next unless [BOOKMARK_EMOJI, PIN_EMOJI].include? event.emoji.name
|
||||
|
||||
message_author_fname = "#{message_author_nickname} (#{message_author_distinct})" # this is the 'author' field of the embed
|
||||
if(event.emoji.name == BOOKMARK_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
|
||||
|
||||
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
|
||||
original_msg_link = event.message.link
|
||||
message_author_fname = "#{message_author_nickname} (#{message_author_distinct})" # this is the 'author' field of the embed
|
||||
|
||||
pm = event.user.pm
|
||||
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
|
||||
original_msg_link = event.message.link
|
||||
|
||||
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
|
||||
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
|
||||
end
|
||||
|
||||
if(event.emoji.name == PIN_EMOJI)
|
||||
event.message.pin
|
||||
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
|
||||
bot.reaction_remove do |event|
|
||||
next unless event.emoji.name == PIN_EMOJI
|
||||
event.message.unpin
|
||||
nil
|
||||
end
|
||||
|
||||
bot.run
|
||||
|
Loading…
Reference in New Issue
Block a user