Golang如何通过代理在服务器上运行编译成二进制文件的Telegram机器人

Golang如何通过代理在服务器上运行编译成二进制文件的Telegram机器人 这该如何实现?我有一个二进制文件。我直接把它上传到服务器(Ubuntu系统),因为我不知道如何在服务器上正确部署这个机器人…然后我运行它(./app),首先设置文件权限,但自然会出现无法连接到Telegram API的提示。有人能告诉我如何在Ubuntu上部署这个机器人吗?这样SOCKS代理就会部署在这台服务器上,并且通过它来建立与API的连接。

我使用这个库来开发机器人:https://github.com/go-telegram-bot-api/telegram-bot-api/wiki

没有发现其中是否有通过SOCKS代理连接的方法,有经验的人请分享一下,这会很有帮助)


更多关于Golang如何通过代理在服务器上运行编译成二进制文件的Telegram机器人的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang如何通过代理在服务器上运行编译成二进制文件的Telegram机器人的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go中通过SOCKS代理运行Telegram机器人,可以使用golang.org/x/net/proxy包来配置代理连接。以下是完整的实现方案:

首先安装必要的依赖:

go get golang.org/x/net/proxy

然后修改你的机器人代码,添加SOCKS代理支持:

package main

import (
    "golang.org/x/net/proxy"
    "net"
    "net/http"
    "github.com/go-telegram-bot-api/telegram-bot-api"
    "log"
)

func main() {
    // SOCKS5代理配置
    socksProxy := "127.0.0.1:1080" // 替换为你的SOCKS代理地址
    
    // 创建代理拨号器
    dialer, err := proxy.SOCKS5("tcp", socksProxy, nil, proxy.Direct)
    if err != nil {
        log.Fatal("SOCKS5代理错误:", err)
    }

    // 创建使用代理的HTTP传输层
    httpTransport := &http.Transport{
        Dial: dialer.Dial,
    }

    // 创建HTTP客户端
    httpClient := &http.Client{
        Transport: httpTransport,
    }

    // 初始化Telegram机器人,传入自定义HTTP客户端
    bot, err := tgbotapi.NewBotAPIWithClient("YOUR_TELEGRAM_BOT_TOKEN", httpClient)
    if err != nil {
        log.Fatal("机器人初始化失败:", err)
    }

    bot.Debug = true
    log.Printf("已授权账号 %s", bot.Self.UserName)

    // 配置更新
    u := tgbotapi.NewUpdate(0)
    u.Timeout = 60

    updates, err := bot.GetUpdatesChan(u)
    if err != nil {
        log.Fatal("获取更新失败:", err)
    }

    // 处理消息
    for update := range updates {
        if update.Message == nil {
            continue
        }

        log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)

        msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text)
        msg.ReplyToMessageID = update.Message.MessageID

        bot.Send(msg)
    }
}

对于服务器部署,创建一个systemd服务来管理机器人进程:

sudo nano /etc/systemd/system/telegram-bot.service

添加以下内容:

[Unit]
Description=Telegram Bot with SOCKS Proxy
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/path/to/your/bot
ExecStart=/path/to/your/bot/app
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable telegram-bot
sudo systemctl start telegram-bot

检查服务状态:

sudo systemctl status telegram-bot

确保服务器上已经安装了SOCKS5代理服务(比如Shadowsocks、Dante等),并且代理服务正在运行。这样你的Telegram机器人就会通过指定的SOCKS代理来连接Telegram API。

回到顶部