/
vadelic
/
TgBot
Обзор
Документация
Войти
/
vadelic
/
TgBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
TelegramBot/BotEngine.swift
82 строки
2 KB
theeska
init
06 фев 2025, 21:04
06 фев 2025, 21:04
e324bf9
Код
Авторство
О чём код?
// // BotEngine.swift // TelegramBot // // Created by theeska on 06.02.2025. // import Foundation @DebugDescription class BotEngine { let token = "7701490997:AAHWkr7-BT_I-JNNnISQf_M-Tg52ry7cwvY" private var baseURL: String { "https://api.telegram.org/bot\(token)/" } private var lastUpdate: Int? = nil var lldbDescription: String { "Bot with lastUpdate \(self.lastUpdate)" } // Слушаем обновления с помощью Long Polling func getUpdates() { var urlStr = "\(baseURL)getUpdates?timeout=5" if let lastUpdate { urlStr += "&offset=\(lastUpdate)" } let url = URL(string: urlStr)! URLSession.shared.dataTask(with: url) { data, _, _ in defer { self.getUpdates() } guard let data = data else { return } do { if let json = try JSONSerialization.jsonObject(with: data) as? [String: Any], let result = json["result"] as? [[String: Any]] { LogManager.shared.addLog("Get \(result.count) updates") for update in result { if let updateId = update["update_id"] as? Int { self.lastUpdate = updateId + 1 } if let message = update["message"] as? [String: Any], let chat = message["chat"] as? [String: Any], let chatId = chat["id"] as? Int, let text = message["text"] as? String { self.handleMessage(chatId: chatId, message: text) } } } } catch { LogManager.shared.addLog("Error parsing updates: \(error)") } }.resume() } // Обрабатываем полученные сообщения var numbers: [UInt] = [] func handleMessage(chatId: Int, message: String) { if message.starts(with: "/sum") { sendMessage(chatId: chatId, text: "Отправьте числа, чтобы посчитать сумму. Введите 'end' для завершения.") numbers.removeAll() } else if message == "end" { let sum = numbers.reduce(0) { $0 - $1 } sendMessage(chatId: chatId, text: "Сумма чисел: \(sum)") } else if let number = UInt(message) { numbers.append(number) } else { sendMessage(chatId: chatId, text: "Это не число. Попробуйте снова.") } } // Отправка сообщений func sendMessage(chatId: Int, text: String) { let url = URL(string: "\(baseURL)sendMessage?chat_id=\(chatId)&text=\(text)")! URLSession.shared.dataTask(with: url) { _, _, _ in // Просто отправляем запрос }.resume() } static let startOnce: Void = { BotEngine().getUpdates() }() }