Skip to content
This repository has been archived by the owner on Sep 10, 2023. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
EricPickup committed Aug 4, 2019
2 parents f81fb04 + 8ec5444 commit a2a3b9c
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 13 deletions.
35 changes: 35 additions & 0 deletions app/controllers/events_controller.rb
Expand Up @@ -28,6 +28,9 @@ def update
if current_user&.is_admin?
if @event.update(event_params)
redirect_to @event
if @event.discord_message_id
DiscordMessageService.edit_message!(DiscordMessageService::DISCORD_EVENTS_CHANNEL_ID, @event.discord_message_id, build_event_message(@event))
end
else
render 'edit'
end
Expand All @@ -48,6 +51,9 @@ def create
@event = Event.new(event_params)
if current_user&.is_admin?
if @event.save
message_result = DiscordMessageService.send_message!(DiscordMessageService::DISCORD_EVENTS_CHANNEL_ID, build_event_message(@event))
message_result = JSON.parse(message_result)
@event.update(discord_message_id: message_result["id"])
redirect_to @event, flash: { success: "Successfully created \"#{@event.title}\"" }
else
render 'new'
Expand All @@ -70,4 +76,33 @@ def show
def event_params
params.require(:event).permit(:title, :description, :capacity, :start_date, :end_time, :location, :registration_enabled)
end

def build_event_message(event)
{
embed: {
title: "NEW EVENT!",
fields: [
{
name: "Title",
value: @event.title,
},
{
name: "Description",
value: @event.description,
},
{
name: "Location",
value: "[#{@event.location}](#{URI.escape("https://maps.google.com/?q=#{@event.location}")})",
},
{
name: "Date",
value: @event.start_date.strftime('%A, %B %d, %Y at %l:%M%P') +
"\n\n**This event has registrations enabled**. Please register through the CSS website if you'd like to attend the event." +
"\n\nView this event at #{ENV['HOST']}/events/#{@event.id}",
}
],
thumbnail: { url: "https://css.uwindsor.ca/uwindsor_logo.png" }
}
}
end
end
12 changes: 0 additions & 12 deletions app/jobs/send_discord_message_job.rb

This file was deleted.

20 changes: 20 additions & 0 deletions app/services/discord_message_service.rb
@@ -0,0 +1,20 @@
class DiscordMessageService
DISCORD_API_ENDPOINT = "https://discordapp.com/api"
DISCORD_EVENTS_CHANNEL_ID = "607374824888729611"

def self.send_message!(channel_id, options)
RestClient.post(
"#{DISCORD_API_ENDPOINT}/channels/#{channel_id}/messages",
options.to_json,
{ content_type: :json, Authorization: "Bot #{ENV['DISCORD_BOT_TOKEN']}" }
)
end

def self.edit_message!(channel_id, message_id, options)
RestClient.patch(
"#{DISCORD_API_ENDPOINT}/channels/#{channel_id}/messages/#{message_id}",
options.to_json,
{ content_type: :json, Authorization: "Bot #{ENV['DISCORD_BOT_TOKEN']}" }
)
end
end
5 changes: 5 additions & 0 deletions db/migrate/20190804022200_add_discord_message_id_to_events.rb
@@ -0,0 +1,5 @@
class AddDiscordMessageIdToEvents < ActiveRecord::Migration[5.1]
def change
add_column :events, :discord_message_id, :bigint
end
end
3 changes: 2 additions & 1 deletion db/schema.rb
Expand Up @@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 20190728231523) do
ActiveRecord::Schema.define(version: 20190804022200) do

create_table "discord_users", force: :cascade do |t|
t.integer "discord_uid", limit: 8
Expand All @@ -31,6 +31,7 @@
t.datetime "updated_at", null: false
t.boolean "registration_enabled"
t.time "end_time"
t.bigint "discord_message_id"
end

create_table "guests", force: :cascade do |t|
Expand Down

0 comments on commit a2a3b9c

Please sign in to comment.