Ответ
Да, можно, используя Telegram Bot API. Для этого бот должен быть администратором целевого канала, а вызов метода отправки должен использовать уникальный идентификатор канала.
Ключевые шаги:
- Получить ID канала: ID канала обычно начинается с
-100. Его можно получить, добавив бота в канал и отправив туда любое сообщение, а затем проверивupdate.getChannelPost().getChatId()в логах. - Хранить список каналов: ID каналов для выбора можно хранить в базе данных, конфигурационном файле или
Map<String, String>(название -> ID). - Отправить сообщение:
Пример кода с использованием библиотеки telegrambots:
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
public class ChannelBot extends TelegramLongPollingBot {
public void sendToSelectedChannel(String channelId, String text) {
SendMessage message = new SendMessage();
message.setChatId(channelId); // Например, "-1001234567890"
message.setText(text);
// Можно добавить разметку: message.setParseMode("HTML");
try {
execute(message);
} catch (TelegramApiException e) {
// Обработка ошибок (нет прав, неверный ID и т.д.)
e.printStackTrace();
}
}
// Методы getBotUsername() и getBotToken()...
}
Практический совет: Для управления списком каналов реализуйте простой сервис, который по ключу (например, названию компании) будет возвращать соответствующий channelId из хранилища.