Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/vk_bot/_utils/bot_polling.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def run_polling() -> None:
'message': {
'from_id': event.from_user,
'text': event.text,
'peer_id': event.from_user,
'peer_id': event.peer_id,
},
},
}
Expand Down
20 changes: 20 additions & 0 deletions src/vk_bot/_utils/message_processing.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@

from .account_linking import handle_unregistered_user, register_vk_only_user
from .common import VKHandlerContext, VKMessage, get_invite_from_message

# VK peer_id above this value means a group chat (conversation), not a private dialog.
# See: https://dev.vk.com/ru/reference/objects/user#peer_id
_VK_CHAT_START_ID = 2_000_000_000
from .database import db
from .decorators import vk_registry
from .handler_chain import handle_unknown
Expand Down Expand Up @@ -74,6 +78,14 @@ def handle_new_message(
vk_user_id = vk_message.user_id
is_new_user = False

# Ignore messages from group chats — bot should only respond in private dialogs
if vk_message.peer_id > _VK_CHAT_START_ID:
logging.info(
f'handle_new_message: ignoring group chat message '
f'from vk_user={vk_user_id}, peer_id={vk_message.peer_id}'
)
return

logging.info(f'handle_new_message: vk_user={vk_user_id}, text="{vk_message.text}"')

# 1. Resolve identity from user_identity_map
Expand Down Expand Up @@ -166,6 +178,14 @@ def handle_callback_event(
if not payload:
return

# Ignore callbacks from group chats — same as handle_new_message
if vk_message.peer_id > _VK_CHAT_START_ID:
logging.info(
f'handle_callback_event: ignoring group chat callback '
f'from vk_user={vk_message.user_id}, peer_id={vk_message.peer_id}'
)
return

# Resolve identity
vk_user_id = vk_message.user_id
identity = db().get_identity_by_messenger_user_id(vk_user_id)
Expand Down
Loading