Отправка сообщений Telegram bot

121
30 октября 2019, 14:00

Для написания бота, я использую библиотеку для java TelegraBots

Когда Java-класс extends TelegramLongPollingBot, то я могу добавить метод отправки сообщения на сервер (в том же классе):

private void sendAllMessages(String chatId, String text) {
        SendMessage message = new SendMessage();
        message.setText(text);
        message.setChatId(chatId);
        try {
            execute(message);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }

Но мне не хочется вызывать весь класс в другом классе ради одного метода. Я хотел бы вынести возможность отправки сообщений в отдельный класс. Как это лучше всего стоит сделать?

Примерно как я это вижу:

import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
public class sendMessages {
    private String chatId, text;
    public sendMessages(String chatId, String text){
        this.chatId = text;
        this.text = text;
    }
    private void sendAllMessages() {
        SendMessage message = new SendMessage();
        message.setText(text);
        message.setChatId(chatId);
        try {
            execute(message);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
}
Answer 1

Проблему решил. Я решил пойти на хитрый шаг:

У Вас есть файл, допустим, EventHandler.java в котором public class EventListener extends TelegramLongPollingBot{...}.

Создаем второй класс, допустим, SendMessagesBot.
В нем создаем метод:

public void sendEvent(String chatId, String text){
    SendMessage message = new SendMessage();
    message.setText(text);
    message.setParseMode(ParseMode.MARKDOWN);
    message.setChatId(Long.parseLong(chatId));
    try {
        //просто вызываем класс EventListner с методом execute
        new EventListener().execute(message);
    } catch (TelegramApiException e) {
        e.printStackTrace();
    }
}
READ ALSO
Обработка входящих сообщений Telegram API

Обработка входящих сообщений Telegram API

Пишу телеграмм бота для регистрации задачИспользую библиотеку от rubenlagus

136
При использовании @EnableAspectJAutoProxy не работает Autowired

При использовании @EnableAspectJAutoProxy не работает Autowired

начал разбираться со Spring и AOP, хочу сделать логирование, но столкнулся с проблемойВот классы мои классы Application:

139
Разные view для списка

Разные view для списка

Решил сделать в списке групировку по датам, что то подобное такому:

149
Закрыть listening порт

Закрыть listening порт

Мне нужно закрывать listening порт(например, 12000, который создается java методом serversocketaccept) в определённый момент(неизвестно когда он наступит)

153