Бот в бизнес-аккаунте telegram не отвечает в лс между другими людьми но отвечает в свой лс
Бот поддерживающий ии отвечает только в сообщениях с ним, но подключенный он же в телеграмм чаты с другими людьми при помощи функции Telegram для бизнеса он не видит сообщения и следовательно не отвечает на них
Вот код
from dotenv import load_dotenv
import logging
import os
import httpx
import aiosqlite
import asyncio
from aiogram import Bot, Dispatcher, types, F
from aiogram.filters import Command
from aiogram.enums import ParseMode
from aiogram.client.default import DefaultBotProperties
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, ReplyKeyboardRemove
# Загрузка переменных окружения
load_dotenv()
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
CHUTES_API_TOKEN = os.getenv("CHUTES_API_TOKEN")
logging.basicConfig(level=logging.INFO)
bot = Bot(token=TELEGRAM_BOT_TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
dp = Dispatcher()
API_URL = "https://llm.chutes.ai/v1/chat/completions"
MODEL = "deepseek-ai/DeepSeek-V3-0324"
DB_PATH = "database/users.db"
async def init_db():
os.makedirs("database", exist_ok=True)
async with aiosqlite.connect(DB_PATH) as db:
await db.execute('''
CREATE TABLE IF NOT EXISTS users (
user_id INTEGER PRIMARY KEY,
style TEXT DEFAULT 'official'
)
''')
await db.commit()
async def set_user_style(user_id: int, style: str):
async with aiosqlite.connect(DB_PATH) as db:
await db.execute("INSERT OR IGNORE INTO users (user_id, style) VALUES (?, ?)", (user_id, style))
await db.execute("UPDATE users SET style = ? WHERE user_id = ?", (style, user_id))
await db.commit()
async def get_user_style(user_id: int) -> str:
async with aiosqlite.connect(DB_PATH) as db:
async with db.execute("SELECT style FROM users WHERE user_id = ?", (user_id,)) as cursor:
row = await cursor.fetchone()
return row[0] if row else 'official'
@dp.message(Command("start"))
async def send_welcome(message: types.Message):
await init_db()
await message.reply(
"? Привет! Я бот с искусственным интеллектом. "
"Мой стиль общения можно настроить:\n\n"
"• /style - изменить стиль ответов\n"
"• /help - справка о возможностях",
reply_markup=ReplyKeyboardRemove()
)
@dp.message(Command("style"))
async def choose_style(message: types.Message):
kb = ReplyKeyboardMarkup(
keyboard=[
[KeyboardButton(text='Дружелюбный ?'), KeyboardButton(text='Официальный ?')],
[KeyboardButton(text='Мемный ?')]
],
resize_keyboard=True
)
await message.reply("Выберите стиль общения:", reply_markup=kb)
@dp.message(F.text.in_(['Дружелюбный ?', 'Официальный ?', 'Мемный ?']))
async def set_style(message: types.Message):
style_map = {
'Дружелюбный ?': 'friendly',
'Официальный ?': 'official',
'Мемный ?': 'meme'
}
style = style_map.get(message.text, 'official')
await set_user_style(message.from_user.id, style)
await message.reply(
f"✅ Стиль изменен: {message.text}",
reply_markup=ReplyKeyboardRemove()
)
@dp.message(Command("help"))
async def send_help(message: types.Message):
await message.reply(
"ℹ️ Доступные команды:\n\n"
"/start - начать общение\n"
"/style - изменить стиль ответов\n"
"/help - эта справка\n\n"
"Просто напишите сообщение, чтобы получить ответ!"
)
@dp.message()
async def handle_message(message: types.Message):
user_prompt = message.text.strip()
if not user_prompt:
await message.reply("Пожалуйста, введите текст запроса.")
return
style = await get_user_style(message.from_user.id)
style_prompts = {
'friendly': 'Отвечай дружелюбно, с эмодзи. Будь теплым и поддерживающим.',
'official': 'Отвечай строго официально, профессионально, без сленга.',
'meme': 'Отвечай с юмором, используй мемы и игривый тон. Можешь добавлять мемные фразы.'
}
system_prompt = style_prompts.get(style, style_prompts['official'])
headers = {
"Authorization": f"Bearer {CHUTES_API_TOKEN}",
"Content-Type": "application/json"
}
payload = {
"model": MODEL,
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
"stream": False,
"max_tokens": 1024,
"temperature": 1 if style == 'official' else 1.0
}
try:
async with httpx.AsyncClient(timeout=60) as client:
response = await client.post(API_URL, headers=headers, json=payload)
response.raise_for_status()
data = response.json()
ai_text = data["choices"][0]["message"]["content"]
await message.answer(ai_text, parse_mode=ParseMode.MARKDOWN)
except Exception as e:
await message.reply(f"⚠️ Ошибка: {str(e)}")
async def main():
await dp.start_polling(bot)
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
asyncio.run(main())