module SerieBot
module Logging
require 'rumoji'
extend Discordrb::Commands::CommandContainer
extend Discordrb::EventContainer
def self.get_message(event, state)
if state == nil or state == "{DELETE}"
if (event.channel.private?)
server_name = "DM"
channel_name = event.channel.name
else
server_name = event.server.name
channel_name = "##{event.channel.name}"
end
messages[event.message.id] = {
:event => event,
:server => server_name,
:channel => channel_name,
}
content = Rumoji.encode(event.message.content)
event.message.mentions.each { |x| content = content.gsub("<@#{x.id.to_s}>", "<@#{x.distinct}>") ; content = content.gsub("<@!#{x.id.to_s}>", "\@#{x.distinct}") }
attachments = event.message.attachments
id = Base64.strict_encode64([event.message.id].pack('L<'))
puts "#{state}(#{id}) #{event.message.timestamp.strftime('[%D %H:%M]')} #{server_name}/#{channel_name} <#{event.message.author.distinct}> #{content}"
puts "<Attachments: #{attachments[0].filename}: #{attachments[0].url} >" unless attachments.empty?
else
if messages[event.id].nil?
puts "{DELETE} Message with ID {event.id} was deleted, but the contents couldn't be fetched."
end
delete_event = messages[event.id][event]
server_name = messages[event.id][:server]
channel_name = messages[event.id]
content = Rumoji.encode(delete_event.message.content)
delete_event.message.mentions.each { |x| content = content.gsub("<@#{x.id.to_s}>", "<@#{x.distinct}>") ; content = content.gsub("<@!#{x.id.to_s}>", "\@#{x.distinct}") }
attachments = delete_event.message.attachments
id = Base64.strict_encode64([delete_event.message.id].pack('L<'))
puts "#{state}(#{id}) #{delete_event.message.timestamp.strftime('[%D %H:%M]')} #{server_name}/#{channel_name} <#{delete_event.message.author.distinct}> #{content}"
puts "<Attachments: #{attachments[0].filename}: #{attachments[0].url} >" unless attachments.empty?
end
end
message do |event|
next if Config.ignored_servers.include?(event.server.id) rescue nil
self.get_message(event, nil)
end
message_edit do |event|
next if Config.ignored_servers.include?(event.server.id) rescue nil
self.get_message(event, "{EDIT}")
end
message_delete do |event|
next if Config.ignored_servers.include?(event.server.id) rescue nil
self.get_message(event, "{DELETE}")
end
member_join do |event|
puts "[#{Time.now.strftime('[%D %H:%M]')}] #{event.member.distinct} joined \{#{event.server.name}\}"
end
end
end