first commit
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
# Токен от @BotFather
|
||||
BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
|
||||
|
||||
# true — подробные логи API Telegram
|
||||
BOT_DEBUG=false
|
||||
@@ -0,0 +1,8 @@
|
||||
.env
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
/bin/
|
||||
/dist/
|
||||
@@ -0,0 +1,15 @@
|
||||
# tgvpn
|
||||
|
||||
Telegram-бот на Go (базовое приветствие, дальше — VPN-функции).
|
||||
|
||||
## Запуск
|
||||
|
||||
1. Скопируйте `.env.example` в `.env` и укажите `BOT_TOKEN` от [@BotFather](https://t.me/BotFather).
|
||||
2. `go run .`
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
| Переменная | Описание |
|
||||
|--------------|-----------------------------------|
|
||||
| `BOT_TOKEN` | Токен бота (обязательно) |
|
||||
| `BOT_DEBUG` | `true` — подробные логи API |
|
||||
@@ -0,0 +1,8 @@
|
||||
module telegramvpn
|
||||
|
||||
go 1.22
|
||||
|
||||
require (
|
||||
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1
|
||||
github.com/joho/godotenv v1.5.1
|
||||
)
|
||||
@@ -0,0 +1,4 @@
|
||||
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 h1:wG8n/XJQ07TmjbITcGiUaOtXxdrINDz1b0J1w0SzqDc=
|
||||
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1/go.mod h1:A2S0CWkNylc2phvKXWBBdD3K0iGnDBGbzRpISP2zBl8=
|
||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||
@@ -0,0 +1,57 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
|
||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
_ = godotenv.Load()
|
||||
|
||||
token := os.Getenv("BOT_TOKEN")
|
||||
if token == "" {
|
||||
log.Fatal("BOT_TOKEN не задан. Скопируйте .env.example в .env и укажите токен от @BotFather")
|
||||
}
|
||||
|
||||
bot, err := tgbotapi.NewBotAPI(token)
|
||||
if err != nil {
|
||||
log.Fatalf("не удалось подключиться к Telegram: %v", err)
|
||||
}
|
||||
|
||||
bot.Debug = os.Getenv("BOT_DEBUG") == "true"
|
||||
log.Printf("бот @%s запущен", bot.Self.UserName)
|
||||
|
||||
u := tgbotapi.NewUpdate(0)
|
||||
u.Timeout = 60
|
||||
|
||||
updates := bot.GetUpdatesChan(u)
|
||||
|
||||
for update := range updates {
|
||||
if update.Message == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
chatID := update.Message.Chat.ID
|
||||
text := update.Message.Text
|
||||
|
||||
var reply string
|
||||
switch text {
|
||||
case "/start":
|
||||
name := update.Message.From.FirstName
|
||||
if name == "" {
|
||||
name = "друг"
|
||||
}
|
||||
reply = "Привет, " + name + "!\n\nЯ VPN-бот. Пока умею только здороваться — дальше добавим функции."
|
||||
default:
|
||||
reply = "Напишите /start, чтобы начать."
|
||||
}
|
||||
|
||||
msg := tgbotapi.NewMessage(chatID, reply)
|
||||
if _, err := bot.Send(msg); err != nil {
|
||||
log.Printf("ошибка отправки в чат %d: %v", chatID, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user