我可以从Spring Boot应用程序启动电报机器人吗?

时间:2018-05-23 14:11:43

标签: java spring-boot telegram-bot

我尝试从这里创建一个机器人 https://github.com/rubenlagus/TelegramBots

它作为一个简单的应用程序工作,但是当我尝试添加Spring Boot时,它不起作用。我想这是因为Spring Boot启动Tomcat并且电报机器人尝试发送/接收一些http。

我没有收到任何错误(bot以@Component bean的形式启动)。

甚至可以连接这种机器人和Spring Boot应用程序或至少是一个Web应用程序吗?

2 个答案:

答案 0 :(得分:3)

您可以尝试在同一库中使用telegrambots-spring-boot-starter

您的主要配置应如下所示:

@SpringBootApplication
public class YourApplicationMainClass {

    public static void main(String[] args) {
        ApiContextInitializer.init();

        SpringApplication.run(YourApplicationMainClass.class, args);
    }
}

您的机器人类别:

// Standard Spring component annotation
@Component
public class YourBotName extends TelegramLongPollingBot {
    //Bot body.
}

更多信息,您可以在这里https://github.com/rubenlagus/TelegramBots/tree/master/telegrambots-spring-boot-starter

答案 1 :(得分:1)

如@Bobby所说,您可以尝试

telegrambots-spring-boot-starter项目

您还可以添加新的telegrambots-extensions依赖关系,使您能够管理命令bot。

所以代码将是

@Component
public class Foo extends TelegramLongPollingCommandBot {

        @Override
        public void processNonCommandUpdate(Update update) {

您还可以通过这种方式管理命令。

@Component
public class FooCommand extends DefaultBotCommand {

      @Override
      public void execute(AbsSender absSender, User user, Chat chat, Integer messageId, String[] arguments) {

您可以在SpringBoot类主程序中注册TelegramLongPollingCommandBot,如下所示:

 @SpringBootApplication 
 public class TelegramBotConfiguration { 
      public static void main(String[] args)      {       
         ApiContextInitializer.init();
         TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
         try {
           session = telegramBotsApi.registerBot(new Foo());

         } catch (TelegramApiException e) {
             log.error(e);
         }
         SpringApplication.run(TelegramBotConfiguration.class, args);
      }
 }

[https://github.com/rubenlagus/TelegramBots/tree/master/telegrambots-extensions]