Как отправить сообщение боту в Telegram через java?

777
30 июня 2017, 05:57

Подскажите что не так код почему то не работает. Вот мой код:
curl "https://api.telegram.org/bot353090053:AAEi9HD8yx2c6pfoBRDHPqgnPKjZWA-hX8M/sendMessage" -d 'chat_id=@gryts&text=Что-то случилось!"

Answer 1

Вот пример бота с использованием compile "org.telegram:telegrambots:3.0.1".

В примере показано как бот принимает от пользователя сообщения и если сообщение == "/start" то бот потравляет в ответ сообщение "Welcome".

Bot.java

public class Bot extends TelegramLongPollingBot {
    private final String TAG = Bot.class.getSimpleName();
    private final util.Log log = new Log(TAG);
    private final String BOT_TOKEN;
    private HashSet<String> commands;
    private static final String COMMAND_START = "/start";
    public Bot(String token) {
        this.BOT_TOKEN = token;
        this.commands = new HashSet<>();

        //fill commands and answers arrays
        this.commands.addAll(Arrays.asList(COMMAND_START));
    }

    @Override
    public String getBotUsername() {
        return "myBot_name";
    }
    @Override
    public String getBotToken() {
        return BOT_TOKEN;
    }
    @Override
    public void onUpdateReceived(Update update) {
        // We check if the update has a message and the message has text
        if (update.hasMessage() && update.getMessage().hasText()) {
            //get message data
            User user = update.getMessage().getFrom();
            Long chatId = update.getMessage().getChatId();
            Integer messageId = update.getMessage().getMessageId();
            String data = update.getMessage().getText();
            log.debug("Accept data: [" + data + "] ,  from: [" + user.getFirstName() + "]");    
            switch (data) {
                case COMMAND_START:
                        sendMessage(chatId, "Welcome");
                        return;
                }
                break;
        }
    }
        private void sendMessage(Long chatId, String data) {
        SendMessage message = new SendMessage() 
                .setChatId(chatId)
                .setText(data);
        try {
            this.sendMessage(message);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
}

Main.java

public class Main {
    private static final String TAG = Main.class.getSimpleName();
    private static final Log log = new Log(TAG);
    public static void main(String[] args) {
        //init Telegram API
        ApiContextInitializer.init();
        TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
        //get
        String token = ProjectProperties.getToken();
        Bot bot = new Bot(token);
        try {
            telegramBotsApi.registerBot(bot);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
}
READ ALSO
Как убрать автоподставку комментария git

Как убрать автоподставку комментария git

Как в Intellije Idea убрать автоподставку комментария при коммите?

303
Стек технологий для понимания Rest java?

Стек технологий для понимания Rest java?

Что изучать, чтобы научиться писать\понимать restfull сервисы на javaИнтересует стек технологий

224
Selenium Webdriver

Selenium Webdriver

Доброго дня, коллегиЕсть написанный тест на java

178
Свойство layout_gravity в коде

Свойство layout_gravity в коде

Как задать свойство layout_gravity для TextView в коде?

169