телифон связь поиск в интернате

This commit is contained in:
huker667 committed 2026-09-16 16:52:32 +03:00
1 parent d78c1b55c0
commit 374c01458d
6 files changed
+206 -23

No files matched your search

+83
View File
@@ -2,6 +2,7 @@ import re
import time
import shelve
import requests
from datetime import datetime
from aiogram.methods import AnswerGuestQuery, SendPoll
from aiogram.types import InlineQueryResultArticle, InputTextMessageContent, InputRichMessageContent, InputRichMessage, Message
@@ -571,3 +572,85 @@ def set_group_setting(
db[group_id] = settings
def apply_time_tags(text):
now = datetime.now()
text = text.replace("{{date}}", now.strftime("%d.%m.%Y"))
text = text.replace("{{time}}", now.strftime("%H:%M"))
text = text.replace("{{now}}", now.strftime("%d.%m.%Y %H:%M"))
return text
def web_search(query):
r = requests.get(
"https://lite.duckduckgo.com/lite/",
params={"q": query},
headers={"User-Agent": "Mozilla/5.0"},
timeout=10
)
r.raise_for_status()
links = re.findall(r"<a[^>]*class=['\"]result-link['\"][^>]*>(.*?)</a>", r.text, re.DOTALL)
snippets = re.findall(r"<td[^>]*class=['\"]result-snippet['\"][^>]*>(.*?)</td>", r.text, re.DOTALL)
results = []
for i in range(min(5, len(links))):
title = re.sub(r"<[^>]+>", "", links[i]).strip()
snippet = re.sub(r"<[^>]+>", "", snippets[i]).strip()[:300] if i < len(snippets) else ""
results.append(f"{title}\n{snippet}")
if not results:
return "ничего не нашлось"
return "\n\n".join(results)
def wiki_search(query):
r = requests.get(
"https://ru.wikipedia.org/w/rest.php/v1/search/page",
params={"q": query, "limit": 3},
headers={"User-Agent": "uzbekgpt/1.0"},
timeout=10
)
r.raise_for_status()
results = []
for p in r.json().get("pages", []):
title = p.get("title", "")
excerpt = re.sub(r"<[^>]+>", "", p.get("excerpt", ""))
results.append(f"{title}\n{excerpt[:400]}")
if not results:
return "ничего не нашлось в википедии"
return "\n\n".join(results)
def extract_tool(text):
m = re.search(r"<search>(.*?)</search>", text, re.DOTALL)
if m:
return "search", m.group(1).strip()
m = re.search(r"<wiki>(.*?)</wiki>", text, re.DOTALL)
if m:
return "wiki", m.group(1).strip()
return None
def add_tokens(user_id, input_t, output_t):
with shelve.open("tokens") as db:
key = str(user_id)
data = db.get(key, {"input": 0, "output": 0, "requests": 0})
data["input"] += input_t
data["output"] += output_t
data["requests"] += 1
db[key] = data
def get_tokens(user_id):
with shelve.open("tokens") as db:
return db.get(str(user_id), {"input": 0, "output": 0, "requests": 0})
async def alert_admin(bot, provider_name, error_text):
current = time.time()
if provider_name in provider_alert_time and current - provider_alert_time[provider_name] < 600:
return
provider_alert_time[provider_name] = current
try:
await bot.send_message(ADMIN_ID, f"🚨 провайдер `{provider_name}` кажется упал:\n{str(error_text)[:300]}")
except Exception as e:
print(f" -- alert admin - {e}")