Как получить название беседы без использования токена пользователя в фреймворке vkbottle?

Как получить название беседы, из которой пришло сообщение, с использованием ключа токена сообщества?
  • 11 ноября 2023 г. 13:09
Ответы на вопрос 1
В фреймворке vkbottle вы можете получить название беседы без использования токена пользователя или с использованием ключа токена сообщества.

1. Без использования токена пользователя:
```python
from vkbottle import VKError, GroupEventType
from vkbottle.bot import Bot, GroupMention, Message

bot = Bot(token="YOUR_GROUP_TOKEN")

@bot.on.message_handler(GroupEventType.MESSAGE_NEW)
async def handle_message(message: Message):
    try:
        conversation = await bot.api.messages.get_conversations_by_id(peer_ids=message.peer_id)
        chat_title = conversation.items[0].chat_settings.title
        print(f"Chat title: {chat_title}")
    except VKError as e:
        print(f"Error: {e}")

bot.run_polling()
```

2. С использованием ключа токена сообщества:
```python
from vkbottle import VKError, GroupEventType
from vkbottle.bot import Bot, GroupMention, Message

bot = Bot(token="YOUR_GROUP_TOKEN")

@bot.on.message_handler(GroupEventType.MESSAGE_NEW)
async def handle_message(message: Message):
    try:
        chat_info = await bot.api.messages.get_conversations_by_id(peer_ids=message.peer_id)
        chat = await bot.api.messages.get_chat(chat_id=chat_info.items[0].chat_settings.owner_id - 2000000000)
        chat_title = chat.title
        print(f"Chat title: {chat_title}")
    except VKError as e:
        print(f"Error: {e}")

bot.run_polling()
```

Обратите внимание, что во втором варианте мы используем метод `messages.get_chat` с передачей `chat_id`, полученного из `chat_settings.owner_id`. Также необходимо учесть, что для доступа к информации о чате необходимо наличие прав доступа `messages`, иначе может возникнуть ошибка.
Похожие вопросы