Если у вас нет доступа к базе данных и вы хотите узнать общее количество сообщений в личном чате с ботом или ID последнего обработанного сообщения, то, к сожалению, возможности API Telegram ограничены. Однако можно предложить некоторые альтернативные способы.
### Альтернативные подходы:
1. **Хранение состояния в памяти:** Если вы не хотите использовать базу данных, вы можете реализовать хранение состояния в памяти. Простой пример использования словаря для хранения ID последнего сообщения и общего количества сообщений:
```python
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.utils import executor
bot = Bot(token='YOUR_BOT_TOKEN')
dp = Dispatcher(bot, storage=MemoryStorage())
chat_data = {}
@dp.message_handler()
async def echo(message: types.Message):
user_id = message.from_user.id
if user_id not in chat_data:
chat_data[user_id] = {'message_count': 0, 'last_message_id': None}
# Увеличиваем счетчик сообщений
chat_data[user_id]['message_count'] += 1
chat_data[user_id]['last_message_id'] = message.message_id
# Отправляем ответ, если нужно
await message.answer(f"Общее количество сообщений: {chat_data[user_id]['message_count']}, ID последнего сообщения: {chat_data[user_id]['last_message_id']}.")
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
```
2. **Сохранение в файле:** Если вам нужно хранить данные устойчиво между запусками бота, вы можете сохранять их в файл (например, JSON). Это будет аналог базам данных, но без необходимости в сложной системе управления.
```python
import json
import os
def load_chat_data():
if os.path.exists('chat_data.json'):
with open('chat_data.json', 'r') as f:
return json.load(f)
return {}
def save_chat_data(data):
with open('chat_data.json', 'w') as f:
json.dump(data, f)
# В основной части кода
chat_data = load_chat_data()
@dp.message_handler()
async def echo(message: types.Message):
user_id = str(message.from_user.id)
if user_id not in chat_data:
chat_data[user_id] = {'message_count': 0, 'last_message_id': None}
chat_data[user_id]['message_count'] += 1
chat_data[user_id]['last_message_id'] = message.message_id
save_chat_data(chat_data)
await message.answer(f"Общее количество сообщений: {chat_data[user_id]['message_count']}, ID последнего сообщения: {chat_data[user_id]['last_message_id']}.")
```
### Объяснение
- В первом примере данные хранятся в оперативной памяти приложения, и чересчур трудно будет сохранять состояние между перезапусками.
- Во втором примере данные сериализуются в JSON файл, что позволяет сохранить состояния между запусками бота.
С помощью этих двух подходов вы сможете отслеживать количество и ID сообщений, избегая непосредственного использования баз данных. Выбор метода зависит от того, насколько устойчивая должна быть система хранения данных.