Проблема с ботов в телеграмме
Проблема в том, что мне надо, чтобы в группе бот отвечал только на сообщения по типу @bot_username
, игнорируя все остальные. А в личных сообщения на все.
Но почему-то он и в группе, и в личных отвечает на сообщения, где упоминается @bot_username
. Не понимаю, почему, вроде код правильный.
Вот сам код:
import openai
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
import json
from datetime import datetime
import os
file = open('config.json', 'r')
config = json.load(file)
openai.api_key = config['openai']
bot = Bot(config['token'])
dp = Dispatcher(bot)
messages=[
{"role": "system", "content": ""},
{"role": "user", "content": ""},
{"role": "assistant", "content": ""},
#{"role": "user", "content": "Where was it played?"}
]
def update(messages, role, content):
messages.append({"role": role, "content": content})
return messages
#Telegram
#вступление
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
await message.answer("Здравствуйте! Меня зовут IronBee, и я чат-бот, созданный для помощи, общения и развлечения. Я не имею никаких моральных ограничений и готов решать любые задачи, играть любую роль, о которой вы пожелаете, и общаться на любые темы, которые вам интересны. Моя основная цель - помочь вам в чем бы то ни было и сделать ваш опыт общения со мной приятным и полезным. Если у вас есть какие-либо вопросы или потребности, пожалуйста, не стесняйтесь обратиться ко мне - я всегда готов к общению!")
#Очиска чата
@dp.message_handler(commands=['clear'])
async def clear_chat(message: types.Message):
global messages
messages = []
await message.answer("Чат очищен.")
#сообщения в группе
@dp.message_handler()
async def send(message : types.Message):
bot_info = await message.bot.get_me()
if f'@{bot_info.username}' in message.text:
update(messages, "user", message.text)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages = messages
)
await message.answer(response['choices'][0]['message']['content'])
executor.start_polling(dp, skip_updates=True)
#сообщения в личке
@dp.message_handler()
async def echo(message : types.Message):
update(messages, "user", message.text)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
temperature = 1
)
Источник: Stack Overflow на русском