Add support for recurring events and add year to channel name (#3)
This commit is contained in:
@ -95,3 +95,9 @@ func (discord *Discord) OnEventUpdate(handler func(*Discord, *core.Event)) {
|
||||
handler(discord, event)
|
||||
})
|
||||
}
|
||||
|
||||
func (discord *Discord) SetStatus(status string) {
|
||||
if err := discord.session.UpdateGameStatus(0, status); err != nil {
|
||||
log.Fatal("Failed to update status: ", err)
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package discord
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/bwmarrin/discordgo"
|
||||
"github.com/yeslayla/birdbot/core"
|
||||
)
|
||||
@ -8,12 +10,21 @@ import (
|
||||
// NewEvent converts a discordgo.GuildScheduledEvent to birdbot event
|
||||
func NewEvent(guildEvent *discordgo.GuildScheduledEvent) *core.Event {
|
||||
event := &core.Event{
|
||||
Name: guildEvent.Name,
|
||||
ID: guildEvent.ID,
|
||||
Name: guildEvent.Name,
|
||||
Description: guildEvent.Description,
|
||||
ID: guildEvent.ID,
|
||||
Organizer: &core.User{
|
||||
ID: guildEvent.CreatorID,
|
||||
},
|
||||
DateTime: guildEvent.ScheduledStartTime,
|
||||
Image: guildEvent.Image,
|
||||
}
|
||||
|
||||
if guildEvent.ScheduledEndTime != nil {
|
||||
event.CompleteTime = *guildEvent.ScheduledEndTime
|
||||
} else {
|
||||
year, month, day := guildEvent.ScheduledStartTime.Date()
|
||||
event.CompleteTime = time.Date(year, month, day, 0, 0, 0, 0, guildEvent.ScheduledStartTime.Location())
|
||||
}
|
||||
|
||||
event.Completed = guildEvent.Status == discordgo.GuildScheduledEventStatusCompleted
|
||||
@ -26,3 +37,26 @@ func NewEvent(guildEvent *discordgo.GuildScheduledEvent) *core.Event {
|
||||
|
||||
return event
|
||||
}
|
||||
|
||||
func (discord *Discord) CreateEvent(event *core.Event) error {
|
||||
|
||||
params := &discordgo.GuildScheduledEventParams{
|
||||
Name: event.Name,
|
||||
Description: event.Description,
|
||||
ScheduledStartTime: &event.DateTime,
|
||||
ScheduledEndTime: &event.CompleteTime,
|
||||
Image: event.Image,
|
||||
EntityType: discordgo.GuildScheduledEventEntityTypeExternal,
|
||||
PrivacyLevel: discordgo.GuildScheduledEventPrivacyLevelGuildOnly,
|
||||
}
|
||||
|
||||
if event.Location != "" {
|
||||
params.EntityMetadata = &discordgo.GuildScheduledEventEntityMetadata{
|
||||
Location: event.Location,
|
||||
}
|
||||
}
|
||||
|
||||
_, err := discord.session.GuildScheduledEventCreate(discord.guildID, params)
|
||||
|
||||
return err
|
||||
}
|
||||
|
Reference in New Issue
Block a user