FreshPixels commited on
Commit
7d704c7
·
verified ·
1 Parent(s): 64d26e7

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +14 -21
server.py CHANGED
@@ -1,10 +1,11 @@
1
- import os, json, urllib.request, subprocess, traceback, sys, ssl
2
  from http.server import BaseHTTPRequestHandler, HTTPServer
3
 
4
  PORT = 7860
5
- # .strip() уберет случайные пробелы в токенах
6
  TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN", "").strip()
7
  ALLOWED_USER = os.environ.get("TELEGRAM_ALLOWED_USERS", "").strip()
 
 
8
 
9
  def log(msg):
10
  """Мгновенный вывод в логи Hugging Face"""
@@ -12,26 +13,20 @@ def log(msg):
12
  sys.stdout.flush()
13
 
14
  def send_tg(chat_id, text):
15
- """Прямая отправка в Telegram в обход строгих проверок SSL"""
16
- if not TOKEN:
17
- log("❌ Ошибка: Не задан TELEGRAM_BOT_TOKEN")
18
  return
19
 
20
- url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
 
21
  data = json.dumps({"chat_id": chat_id, "text": str(text)}).encode('utf-8')
22
- headers = {
23
- "Content-Type": "application/json",
24
- "User-Agent": "Mozilla/5.0"
25
- }
26
  req = urllib.request.Request(url, data=data, headers=headers)
27
 
28
  try:
29
- # Отключаем строгую проверку сертификатов (фикс ошибки SSL)
30
- ctx = ssl.create_default_context()
31
- ctx.check_hostname = False
32
- ctx.verify_mode = ssl.CERT_NONE
33
-
34
- urllib.request.urlopen(req, context=ctx, timeout=10)
35
  log(f"✈️ Сообщение успешно отправлено в чат {chat_id}")
36
  except Exception as e:
37
  log(f"❌ Ошибка отправки в Telegram: {e}")
@@ -41,7 +36,6 @@ class WebhookHandler(BaseHTTPRequestHandler):
41
  length = int(self.headers.get('Content-Length', 0))
42
  data = json.loads(self.rfile.read(length))
43
 
44
- # Сразу отдаем 200 OK Телеграму
45
  self.send_response(200)
46
  self.end_headers()
47
 
@@ -59,17 +53,16 @@ class WebhookHandler(BaseHTTPRequestHandler):
59
  send_tg(chat_id, "🤖 Принято! Запускаю Гермеса...")
60
 
61
  try:
62
- log("🧠 Выполняю команду hermes (с дебагом)...")
63
  my_env = os.environ.copy()
64
 
65
- # Добавлен флаг --debug для детальных логов ответа API
66
  cmd = [
67
  "hermes",
68
  "-m", "openai/z-ai/glm-5.1",
69
  "-z", text,
70
  "chat",
71
- "--cli",
72
- "--debug"
73
  ]
74
 
75
  result = subprocess.run(cmd, capture_output=True, text=True, env=my_env)
 
1
+ import os, json, urllib.request, subprocess, traceback, sys
2
  from http.server import BaseHTTPRequestHandler, HTTPServer
3
 
4
  PORT = 7860
 
5
  TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN", "").strip()
6
  ALLOWED_USER = os.environ.get("TELEGRAM_ALLOWED_USERS", "").strip()
7
+ # Возвращаем наш надежный мост Cloudflare
8
+ CF_URL = os.environ.get("CF_WORKER_URL", "").rstrip('/')
9
 
10
  def log(msg):
11
  """Мгновенный вывод в логи Hugging Face"""
 
13
  sys.stdout.flush()
14
 
15
  def send_tg(chat_id, text):
16
+ """Отправка сообщений в Telegram ЧЕРЕЗ Cloudflare (обход блокировок)"""
17
+ if not CF_URL or not TOKEN:
18
+ log("❌ Ошибка: Не задан CF_WORKER_URL или TELEGRAM_BOT_TOKEN")
19
  return
20
 
21
+ # Бьем в твой рабочий воркер!
22
+ url = f"{CF_URL}/bot{TOKEN}/sendMessage"
23
  data = json.dumps({"chat_id": chat_id, "text": str(text)}).encode('utf-8')
24
+ headers = {"Content-Type": "application/json"}
 
 
 
25
  req = urllib.request.Request(url, data=data, headers=headers)
26
 
27
  try:
28
+ # Даем чуть больше таймаут на всякий случай
29
+ urllib.request.urlopen(req, timeout=15)
 
 
 
 
30
  log(f"✈️ Сообщение успешно отправлено в чат {chat_id}")
31
  except Exception as e:
32
  log(f"❌ Ошибка отправки в Telegram: {e}")
 
36
  length = int(self.headers.get('Content-Length', 0))
37
  data = json.loads(self.rfile.read(length))
38
 
 
39
  self.send_response(200)
40
  self.end_headers()
41
 
 
53
  send_tg(chat_id, "🤖 Принято! Запускаю Гермеса...")
54
 
55
  try:
56
+ log("🧠 Выполняю команду hermes...")
57
  my_env = os.environ.copy()
58
 
59
+ # Убрали --debug, оставили всё как по инструкции Гермеса
60
  cmd = [
61
  "hermes",
62
  "-m", "openai/z-ai/glm-5.1",
63
  "-z", text,
64
  "chat",
65
+ "--cli"
 
66
  ]
67
 
68
  result = subprocess.run(cmd, capture_output=True, text=True, env=my_env)