1. Для отправки приватного сообщения администратору закрытого канала в Telegram с помощью Telegram Bot на Go и зная ID канала, вы можете воспользоваться следующим кодом:
```go
package main
import (
"log"
"os"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
)
func main() {
bot, err := tgbotapi.NewBotAPI("YOUR_BOT_TOKEN")
if err != nil {
log.Panic(err)
}
channelID := -123456789 // ID вашего закрытого канала
adminID := 123456789 // ID администратора канала
msg := tgbotapi.NewMessage(adminID, "Привет! Это приватное сообщение администратору канала.")
msg.ParseMode = "HTML"
_, err = bot.Send(msg)
if err != nil {
log.Panic(err)
}
}
```
Замените `"YOUR_BOT_TOKEN"` на токен вашего бота, `channelID` на ID вашего закрытого канала, а `adminID` на ID администратора канала. Этот код отправит приватное сообщение администратору канала.
2. Для того, чтобы определить, из какого канала пришло сообщение при пересылке сообщений в бот из закрытого канала через связку ID канала и userName в мапе, вы можете усовершенствовать код следующим образом:
```go
package main
import (
"log"
"os"
"fmt"
"strings"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
)
func handleMessage(update tgbotapi.Update) {
var channelID = update.Message.ForwardFromChat.ID
var channelUserName = update.Message.ForwardFromChat.UserName
if channelID != 0 {
fmt.Printf("Сообщение из канала с ID %d и userName %s\n", channelID, channelUserName)
} else {
fmt.Println("Не удалось определить источник сообщения")
}
}
func main() {
bot, err := tgbotapi.NewBotAPI("YOUR_BOT_TOKEN")
if err != nil {
log.Panic(err)
}
bot.Debug = true
updates := bot.ListenForWebhook("/" + bot.Token)
go http.ListenAndServe("0.0.0.0:"+os.Getenv("PORT"), nil)
for update := range updates {
handleMessage(update)
}
}
```
Этот код будет выводить информацию о канале, из которого было переслано сообщение, на которое ваш бот отвечает. Используйте данное усовершенствование для определения источника сообщения на ваш взгляд.