用Go语言编写Discord的机器人,并将其部署到Heroku上以保持常驻状态

写这篇文章的经过

    • 自分用のメモ感覚

 

    DiscordのBotを自作した記事はたくさんあったが、Goで自作した記事 と Go×Heroku×Discordの記事という2つの条件を満たす記事が少なかったため

这篇文章的受众

    • Go言語の基礎は分かる

 

    Go言語でオリジナルのDiscordのBotを自作したい

由于我不打算放上我自己制作的Bot的全部源代码,请自行搜索如何书写。

准备~导入过程

    1. 在Heroku上创建账户

 

    1. 创建Discord的机器人账户,请参考其他文章中的创建方法

 

    1. 编写代码,使用外部包

为了使机器人一直在线运行,将程序部署在服务器上(可以使用EC2或GCE,但今天我们选择Heroku。)

请更详细地描述流程的一部分。

我认为不需要在这里解释过程的1和2,因为有很多的文章。

3. 关于编写代码

这次我使用的外部包是名为”DiscordGo”的包。
简单地说,”DiscordGo”包内部定义了一些函数,通过调用这些函数,可以根据定义的功能调用Discord的API。这是一个专为Go语言编写的包。
有关”DiscordGo”的详细信息,请参考链接。

我认为可以参考discordgo/examples/pingpong/或者discordgo/examples/airhorn/中的代码示例。

为了将机器人常驻化,将程序在服务器上运行。

作为一个重要前提,我希望能够免费将机器人长期放置。所以,不论是使用EC2还是GCE都可以,但是由于之前在建立Minecraft服务器时使用了EC2,所以这次决定放弃EC2,之后在GCP和Heroku之间做出了选择。由于这次只需要运行机器人(应用程序),所以选择了Heroku的Dyno。请注意,Dyno的免费套餐为未绑定信用卡的用户提供550小时/月,绑定信用卡后提供1000小时/月。请注意,未绑定信用卡的用户无法在一个月内持续全天候运行。

这次我将用Go语言编写的应用程序上传到Github,并搭建了与Github和Heroku的自动部署环境。请按照以下步骤进行操作,参考这篇文章。我准备的文件仅限于以下四个:
– Procfile
– README.md
– main.go
– go.mod
每个文件的内容如下所示。

worker: discord_bot_atsumori
// githubのリポジトリの説明欄に表示したい文章を書いてください
package main

import (
    "fmt"
    "github.com/bwmarrin/discordgo"
    "os"
    "os/signal"
    "syscall"
)

const (
    TOKEN = "YOUR TOKEN"
...
...
...
module github.com/Satoshi-sts/YOUR_REPOSITORY

go 1.13

require github.com/bwmarrin/discordgo v0.20.3

只需使用WebUI或终端等方式输入命令启动Dyno即可完成。

最后- 骤然之时

由于在完成作业后写这篇文章,所以可能会有一些遗漏的部分……如果是这样,请谅解,并在评论中告诉我,我会很感激。

辛苦了。

广告
将在 10 秒后关闭
bannerAds