mirror of https://github.com/velour/catbase.git
Compare commits
2 Commits
e1ccd553f1
...
b59d84b301
Author | SHA1 | Date |
---|---|---|
Chris Sexton | b59d84b301 | |
Chris Sexton | cf5e52c2b6 |
|
@ -429,3 +429,19 @@ func (d *Discord) Nick(nick string) error {
|
||||||
guildID := d.config.Get("discord.guildid", "")
|
guildID := d.config.Get("discord.guildid", "")
|
||||||
return d.client.GuildMemberNickname(guildID, "@me", nick)
|
return d.client.GuildMemberNickname(guildID, "@me", nick)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *Discord) Topic(channelID string) (string, error) {
|
||||||
|
channel, err := d.client.Channel(channelID)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return channel.Topic, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *Discord) SetTopic(channelID, topic string) error {
|
||||||
|
ce := &discordgo.ChannelEdit{
|
||||||
|
Topic: topic,
|
||||||
|
}
|
||||||
|
_, err := d.client.ChannelEditComplex(channelID, ce)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
2
main.go
2
main.go
|
@ -4,6 +4,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
|
"github.com/velour/catbase/plugins/topic"
|
||||||
"io"
|
"io"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
|
@ -173,6 +174,7 @@ func main() {
|
||||||
b.AddPlugin(quotegame.New(b))
|
b.AddPlugin(quotegame.New(b))
|
||||||
b.AddPlugin(emojy.New(b))
|
b.AddPlugin(emojy.New(b))
|
||||||
b.AddPlugin(cowboy.New(b))
|
b.AddPlugin(cowboy.New(b))
|
||||||
|
b.AddPlugin(topic.New(b))
|
||||||
// catches anything left, will always return true
|
// catches anything left, will always return true
|
||||||
b.AddPlugin(fact.New(b))
|
b.AddPlugin(fact.New(b))
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
package topic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/rs/zerolog/log"
|
||||||
|
"github.com/velour/catbase/bot"
|
||||||
|
"github.com/velour/catbase/config"
|
||||||
|
"github.com/velour/catbase/connectors/discord"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Topic struct {
|
||||||
|
b bot.Bot
|
||||||
|
c *config.Config
|
||||||
|
}
|
||||||
|
|
||||||
|
func New(b bot.Bot) *Topic {
|
||||||
|
t := &Topic{
|
||||||
|
b: b,
|
||||||
|
c: b.Config(),
|
||||||
|
}
|
||||||
|
t.register()
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *Topic) register() {
|
||||||
|
p.b.RegisterRegexCmd(p, bot.Message, regexp.MustCompile(`(?i)^topic$`), func(r bot.Request) bool {
|
||||||
|
switch conn := r.Conn.(type) {
|
||||||
|
case *discord.Discord:
|
||||||
|
topic, err := conn.Topic(r.Msg.Channel)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("couldn't get topic")
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
p.b.Send(conn, bot.Message, r.Msg.Channel, fmt.Sprintf("Topic: %s", topic))
|
||||||
|
return true
|
||||||
|
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
p.b.RegisterRegexCmd(p, bot.Message, regexp.MustCompile(`(?i)^topic (?P<topic>.*)`), func(r bot.Request) bool {
|
||||||
|
topic := strings.TrimPrefix(r.Msg.Body, "topic ")
|
||||||
|
switch conn := r.Conn.(type) {
|
||||||
|
case *discord.Discord:
|
||||||
|
err := conn.SetTopic(r.Msg.Channel, topic)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("couldn't set topic")
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
topic, err := conn.Topic(r.Msg.Channel)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("couldn't get topic")
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
p.b.Send(conn, bot.Message, r.Msg.Channel, fmt.Sprintf("Topic: %s", topic))
|
||||||
|
return true
|
||||||
|
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in New Issue