Начинающий
- Статус
- Оффлайн
- Регистрация
- 1 Авг 2024
- Сообщения
- 445
- Реакции
- 0
- Выберите загрузчик игры
- Прочие моды
Написал на днях одну может быть кому то полезную штуку через которую можно управлять состоянием функции через тг бота
1. Создаете через @BotFather тг бота и копируете его токен
2. Создаете .py файл и вставляете в него код:
3. Создаете класс на джаве в любом пути вашего клиента
4. В главном классе чита в onInitiazileClient вставляете строку
TelegramActive.startServer();
Вот так:
5. запускаете чит и питон бот
Все! теперь вы можете кнопочками изменять состояние любой функции и она активируется в вашем клиенте!
сделано под экстази!
1. Создаете через @BotFather тг бота и копируете его токен
2. Создаете .py файл и вставляете в него код:
Python:
import asyncio
import socket
from aiogram import Bot, Dispatcher, types, F
from aiogram.utils.keyboard import InlineKeyboardBuilder
API_TOKEN = 'токен вашего бота, обязательно заменить!'
JAVA_HOST = '127.0.0.1'
JAVA_PORT = 65432
bot = Bot(token=API_TOKEN)
dp = Dispatcher()
def call_java(command):
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(2.0)
s.connect((JAVA_HOST, JAVA_PORT))
s.sendall((command + '\n').encode('utf-8'))
data = s.recv(4096)
return data.decode('utf-8').strip()
except: return ""
@dp.message(F.text == "/start")
async def cmd_start(message: types.Message):
data = call_java("GET_CATEGORIES")
if not data:
await message.answer("ошибка: игра спит")
return
builder = InlineKeyboardBuilder()
for cat in data.split(','):
builder.button(text=cat.lower(), callback_data=f"cat_{cat}")
builder.adjust(2)
await message.answer("выбери категорию:", reply_markup=builder.as_markup())
@dp.callback_query(F.data.startswith("cat_"))
async def show_modules(callback: types.CallbackQuery):
cat = callback.data.split('_')[1]
data = call_java(f"GET_MODULES:{cat}")
builder = InlineKeyboardBuilder()
if data:
for mod in data.split(','):
builder.button(text=mod, callback_data=f"toggle_{mod}_{cat}")
builder.button(text="
назад", callback_data="back_to_cats")
builder.adjust(1)
await callback.message.edit_text(f"внутри: {cat}", reply_markup=builder.as_markup())
@dp.callback_query(F.data.startswith("toggle_"))
async def toggle_mod(callback: types.CallbackQuery):
parts = callback.data.split('_')
mod_name = parts[1]
cat_name = parts[2]
call_java(mod_name)
data = call_java(f"GET_MODULES:{cat_name}")
builder = InlineKeyboardBuilder()
for mod in data.split(','):
builder.button(text=mod, callback_data=f"toggle_{mod}_{cat_name}")
builder.button(text="назад", callback_data="back_to_cats")
builder.adjust(1)
await callback.message.edit_reply_markup(reply_markup=builder.as_markup())
await callback.answer(f"готово: {mod_name}")
@dp.callback_query(F.data == "back_to_cats")
async def back_to_cats(callback: types.CallbackQuery):
data = call_java("GET_CATEGORIES")
builder = InlineKeyboardBuilder()
for cat in data.split(','):
builder.button(text=cat.lower(), callback_data=f"cat_{cat}")
builder.adjust(2)
await callback.message.edit_text("выбери категорию:", reply_markup=builder.as_markup())
async def main():
await dp.start_polling(bot)
if __name__ == '__main__':
asyncio.run(main())
3. Создаете класс на джаве в любом пути вашего клиента
java:
package sweetie.evaware.api.module;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.stream.Collectors;
public class TelegramActive {
public static void startServer() {
new Thread(() -> {
try (ServerSocket serverSocket = new ServerSocket(65432)) {
while (true) {
try (Socket socket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8), true)) {
String request = in.readLine();
if (request == null) continue;
if (request.equals("GET_CATEGORIES")) {
String categories = java.util.Arrays.stream(Category.values())
.map(Enum::name)
.collect(Collectors.joining(","));
out.println(categories);
}
else if (request.startsWith("GET_MODULES:")) {
String catName = request.split(":")[1];
String modules = ModuleManager.getInstance().getModules().stream()
.filter(m -> m.getCategory().name().equalsIgnoreCase(catName))
.map(m -> m.getName() + (m.isEnabled() ? " [on]" : " [off]"))
.collect(Collectors.joining(","));
out.println(modules);
}
else {
out.println(toggleModule(request.trim()));
}
} catch (Exception e) { e.printStackTrace(); }
}
} catch (IOException e) { e.printStackTrace(); }
}).start();
}
private static String toggleModule(String name) {
String cleanName = name.replace(" [on]", "").replace(" [off]", "").trim();
for (Module m : ModuleManager.getInstance().getModules()) {
if (m.getName().equalsIgnoreCase(cleanName)) {
m.toggle();
return (m.isEnabled() ? "Включен " : "Выключен ") + m.getName();
}
}
return "Не найден";
}
}
4. В главном классе чита в onInitiazileClient вставляете строку
TelegramActive.startServer();
Вот так:
5. запускаете чит и питон бот
Все! теперь вы можете кнопочками изменять состояние любой функции и она активируется в вашем клиенте!
сделано под экстази!
Последнее редактирование: