Бот на Go собирается на вашем компьютере и загружается как одна готовая программа для Linux. На сервере ничего не компилируется, поэтому вся память вашего тарифа достаётся боту. Чтобы запустить его:
- Соберите бота для Linux x86-64 на своём компьютере.
- Смените тип: на странице Бот, в разделе Код, нажмите Изменить, что запускается рядом с полем Среда выполнения и выберите Go Bot.
- Загрузите программу (по умолчанию она называется
bot) в Files или задайте Ссылка для скачивания (необязательно) в разделе Код. - Вставьте токен на странице Бот, в разделе Discord, и нажмите Подключить.
- Нажмите Запустить и следите за Console.
1. Соберите программу для Linux
В папке проекта, на любом компьютере:
# macOS or Linux
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o bot
# Windows PowerShell
$env:GOOS="linux"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0"; go build -o bot
CGO_ENABLED=0 создаёт один самодостаточный файл, который не зависит от системных библиотек сервера. В результате получается файл bot без расширения. Файл .exe или сборка для macOS на сервере не запустятся.
2. Минимальный бот на discordgo
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"github.com/bwmarrin/discordgo"
)
func main() {
dg, err := discordgo.New("Bot " + os.Getenv("DISCORD_TOKEN"))
if err != nil {
fmt.Println("error creating session:", err)
return
}
dg.Identify.Intents = discordgo.IntentsGuilds
dg.AddHandler(func(s *discordgo.Session, r *discordgo.Ready) {
fmt.Println("Logged in as", r.User.Username)
})
if err := dg.Open(); err != nil {
fmt.Println("error opening connection:", err)
return
}
defer dg.Close()
stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt, syscall.SIGTERM)
<-stop
}
Токен берётся из DISCORD_TOKEN. Когда вы нажимаете Остановить, ваша программа получает сигнал прерывания, поэтому последние строки аккуратно закрывают соединение с Discord. Строка Logged in as переключает метку на странице Обзор на Онлайн в Discord.
3. Смените тип на Go Bot
На странице Бот, в разделе Код, нажмите Изменить, что запускается рядом с полем Среда выполнения и выберите Go Bot. На компьютере то же окно открывает метка типа вверху страницы (например, Node.js Bot). См. Как переключить бота на другой язык.
4. Положите программу на сервер
Загрузите её: в Files нажмите Загрузить и выберите bot. Загрузите рядом с ней все файлы, которые она читает. Делать её исполняемой не нужно: сервер делает это при запуске.
Или пусть сервер скачает её сам: на странице Бот, в разделе Код, в карточке Настройки, задайте Ссылка для скачивания (необязательно) как https-ссылку на вашу готовую программу, например на файл релиза GitHub, и нажмите Сохранить. Если при запуске файла программы нет, сервер скачивает его (до 500 МБ). Чтобы обновить, опубликуйте новую сборку по этой ссылке, удалите программу в Files и нажмите Запустить.
Если задана ссылка для скачивания, кнопка Запустить бота в карточке Настройка бота работает даже до появления файла: скачивание выполняется как часть запуска.

5. Проверьте настройки и запустите
- Файл запуска (карточка Как он запускается): имя и папка программы, по умолчанию
bot, напримерbin/mybot. - Аргументы запуска (необязательно) (карточка Настройки): дополнительные аргументы для вашей программы, например
--debug. Символы оболочки вроде$,;,&и>не разрешены.
Вставьте токен в разделе Discord, нажмите Подключить, затем нажмите Запустить. Консоль покажет [PlayNHost] Starting your bot, а затем вывод вашей программы.
Строки консоли, которые вы можете увидеть
| Строка | Что делать |
|---|---|
[PlayNHost] Your bot is not set up yet: the program bot was not found. | Загрузите программу или впишите в Файл запуска её точное имя и папку. |
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again. | Соберите программу заново с GOOS=linux GOARCH=amd64. |
[PlayNHost] Downloading your program, затем [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start. | Ссылка неверная, приватная или не https. Проверьте Ссылка для скачивания (необязательно) в разделе Код, в карточке Настройки. |
У ботов на Go нет источника Git и нет поля Пакеты: ваши библиотеки находятся внутри программы. Ключи и пароли хранятся в разделе Окружение и читаются через os.Getenv: Как задать переменные окружения и секреты.



