Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 35 additions & 18 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,23 +1,40 @@
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
# Java
.mtj.tmp/

# Package Files #
*.class
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
*.nar
hs_err_pid*
scr/main/resources/config.properties
*/test

# Maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
pom.xml.bak
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar

# Gradle
bin/
build/
.gradle
.gradletasknamecache
gradle-app.setting
!gradle-wrapper.jar

# IntelliJ
out/
.idea/
.idea_modules/
*.iml
*.ipr
*.iws

56 changes: 53 additions & 3 deletions .idea/JavaTelegramBot.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions .idea/libraries/Maven__org_telegram_telegrambots_6_1_0.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

67 changes: 67 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>ru.oopteam.bot</groupId>
<artifactId>java-tg-bot</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
<!-- Telegram API -->
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>6.1.0</version>
</dependency>

<dependency>
<groupId>ru.oopteam.bot</groupId>
<artifactId>java-tg-bot</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>LATEST</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>LATEST</version>
</dependency>

<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.10.2</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>LATEST</version>
</dependency>
</dependencies>


<developers>
<developer>
<name>Kuznetsov Dmitry</name>
</developer>
<developer>
<name>Kiselev Egor</name>
</developer>
</developers>


<properties>
<maven.compiler.source>18</maven.compiler.source>
<maven.compiler.target>18</maven.compiler.target>
</properties>

</project>
29 changes: 29 additions & 0 deletions scr/main/java/ru/oopteam/bot/InitializationManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package ru.oopteam.bot;

import org.reflections.Reflections;
import ru.oopteam.bot.annotations.Initializer;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Set;

public class InitializationManager {
public static void initialize(String packageToScan) {
Reflections reflections = new Reflections(packageToScan);
Set<Class<?>> annotated =
reflections.getTypesAnnotatedWith(Initializer.class);

for (Class<?> annotatedClass : annotated) {
try {
Method method = annotatedClass.getMethod("initialize");
method.setAccessible(true);
method.invoke(null);
} catch (NoSuchMethodException e) {
System.out.println("Метод не найден в классе: " + annotatedClass.getName());
} catch (InvocationTargetException | IllegalAccessException ignored) {
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
38 changes: 26 additions & 12 deletions scr/main/java/ru/oopteam/bot/Main.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,34 @@
package ru.oopteam.bot;

import ru.oopteam.bot.readers.*;
import ru.oopteam.bot.writers.*;
import ru.oopteam.bot.handlers.*;
import org.telegram.telegrambots.meta.TelegramBotsApi;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;
import ru.oopteam.bot.tgbot.Bot;

public class Main{
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Properties;

public class Main {
public static void main(String[] args) {
Reader reader = new ConsoleReader();
Handler handler = new SimpleHandler();
Writer writer = new ConsoleWriter();

while (true) {
Request request = reader.read();
Response response = handler.handle(request);
writer.write(response);
}
InitializationManager.initialize("ru.oopteam.bot");

Properties properties = new Properties();

try {
URL resource = Main.class.getResource("/config.properties");
properties.load(new FileInputStream(new File(resource.toURI())));
TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
botsApi.registerBot(new Bot(properties.getProperty("botName"), properties.getProperty("token")));
} catch (IOException | URISyntaxException | TelegramApiException e) {
throw new RuntimeException(e);
} catch (NullPointerException e) {
System.err.println("Файл конфигураций не найден");
throw new RuntimeException(e);
}
}
}
12 changes: 12 additions & 0 deletions scr/main/java/ru/oopteam/bot/annotations/Initializer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ru.oopteam.bot.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Initializer {
String info() default "";
}
Loading