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