Engineerの研鑽

メインはプログラミング系ブログ(本の要約とかもします)

質問はCONTACTやコメントでお願い致します。

【コピペでできるGO】Discord botを作ってみた

こんにちわ!ゆきとです。

 

今日はGO言語の勉強も兼ねてDiscordhttps://discord.com/というチャットサービスの中でBotを作成していこうと思います!

 

それではLets GO(GOだけにね)

はじめに

今回作成するボットは以下の機能を持たせています。

  • 特定の文字に反応して返事をしてくれる

GOライブラリのインストール

Goでdiscord botを操作するためのライブラリ(https://github.com/bwmarrin/discordgo )をインストールします

discordライブラリのインストールgo get github.com/bwmarrin/discordgo

Discord Botの作成

少しめんどくさいので頑張ってついてきてくださいね。

Discord-My App にアクセスして、New Applicationボタンをクリック

NewApplication

好きな名前をつけて、Createをすればボットの完成です!

CLIENT ID(白い線の部分)はあとで使うので保存しておいてくださいね。

Botの作成

次にBotを自分のServerに入れていきます。

まず左上の三本線(ハンバーガーメニュー)をクリックし、Botの部分を開いて白い見出し「Bot」の右真ん中あたりのボタンを押すとBot Tokenが生成されます(Copyボタンの上にあるやつです)。

このBot Tokenはあとで使うので保存しておいてくださいね!

Bot権限

その後、作成したBotに権限を与えていきます。

Bot権限

その後、以下のhttps://...google  先生に入力して認証をするとBotが自動でDiscordに追加されます!

 *少し前に取っておいたCLIENT IDをYOUR_CLIENT_IDの部分に記載してください。

自分で作成したServerを選択して、Continue。その後は特に何も変更せず出てきたボタンをぽちぽちしてください。すると認証完了です!(サーバーの作り方はおまけに記載しているので、わからない方はそちらを参照してくださいね)

Discord bot認証

 

認証完了

認証が完了すれば自分が指定したサーバーに勝手にBotが入っていることが確認できると思います。

さてようやくコードを書くことができます。

ソースコード

下のコードをコピペして先ほど取っておいたBot TokenをYOUR_BOT_TOKENの部分と書き換えてください。 

discord_youtube_bot.go

package main import ( "fmt" "os" "os/signal" "syscall" "strings" "github.com/bwmarrin/discordgo" ) const( TOKEN = "YOUR_BOT_TOKEN"
//例 : TOKEN = "NHKO....JID" ) func main() { dg, err := discordgo.New("Bot " + TOKEN) if err != nil { fmt.Println("error:start\n", err) return } //on message dg.AddHandler(messageCreate) err = dg.Open() if err != nil { fmt.Println("error:wss\n", err) return } fmt.Println("BOT Running...") //シグナル受け取り可にしてチャネル受け取りを待つ(受け取ったら終了) sc := make(chan os.Signal, 1) signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) <-sc dg.Close() } func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { if m.Author.Bot { return } nick := m.Author.Username member, err := s.State.Member(m.GuildID, m.Author.ID) if err == nil && member.Nick != "" { nick = member.Nick } fmt.Println("< "+m.Content+" by "+nick) if m.Content == "おはよう" { s.ChannelMessageSend(m.ChannelID, "おはよう朝日です!ただいま9時20分") fmt.Println(">おはよう朝日です!ただいま9時20分") } if strings.Contains(m.Content,"美人") { s.ChannelMessageSend(m.ChannelID, "美人動画内見?https://www.youtube.com/watch?v=EzmYhkJE638") fmt.Println("> 美人動画内見") } }

それでは実行していきます..(緊張の一瞬プルプル)

実行結果

コンパイルしてー、実行(ぽちっとな) 

実行結果

いええええええええええええええええい。実行できた。

*コードを書く場所の作り方などがわからない方は、前回の記事で詳しく書いているので、そちらを参考にしてくださいまし

www.yukiyukiponsu.work

 

ただ、本当にdiscordで動いているのかわからないので、discordでボットにメッセージを送ってみる

discord結果

やんごとなきですね。

あとは、いろいろ変えてみたり、他のAPIを入れて天気予報させてみたりとかもできるので是非やってみてくださいね。

ワッチは次youtubeから音楽を自動で流すボットを作ります。

まとめ

今日はGOを使ってDiscord Botを作ってみました。みなさんどうでしたか?作れましたか?

作れなかった方はtwitterのDM等からメッセージをしてください!!対応します。

今日もブログを読んでくださり、誠にありがとうございました! 

それではまた後日

おまけ

Discordサーバーの作り方を説明しますー

Discordの左側部分のプラスボタンをクリックして、ADD SERVERをします。

Create a Serverから自分の好きな名前をつけてサーバーを作成します。以上!

参考資料

GoでDiscordの簡易botを作ろう - Qiita

【GO】ディスコードBOTを作る | Narumium Blog