blueprints.channels: call try_dm_state on dm pre dispatch

This commit is contained in:
Luna Mendes 2018-10-19 13:18:14 -03:00
parent 8e3b5d79ab
commit 692f9ef245
2 changed files with 11 additions and 5 deletions

View File

@ -10,6 +10,7 @@ from ..errors import Forbidden, ChannelNotFound, MessageNotFound
from ..schemas import validate, MESSAGE_CREATE
from .checks import channel_check, guild_check
from .users import try_dm_state
log = Logger(__name__)
bp = Blueprint('channels', __name__)
@ -258,7 +259,7 @@ async def get_single_message(channel_id, message_id):
async def _dm_pre_dispatch(channel_id, peer_id):
"""Doo some checks pre-MESSAGE_CREATE so we
"""Do some checks pre-MESSAGE_CREATE so we
make sure the receiving party will handle everything."""
# check the other party's dm_channel_state
@ -285,10 +286,7 @@ async def _dm_pre_dispatch(channel_id, peer_id):
# insert it on dm_channel_state so the client
# is subscribed on the future
await app.db.execute("""
INSERT INTO dm_channel_state(user_id, dm_id)
VALUES ($1, $2)
""", peer_id, channel_id)
await try_dm_state(peer_id, channel_id)
@bp.route('/<int:channel_id>/messages', methods=['POST'])

View File

@ -289,6 +289,8 @@ async def try_dm_state(user_id, dm_id):
async def create_dm(user_id, recipient_id):
"""Create a new dm with a user,
or get the existing DM id if it already exists."""
dm_id = get_snowflake()
try:
@ -302,6 +304,12 @@ async def create_dm(user_id, recipient_id):
VALUES ($1, $2, $3)
""", dm_id, user_id, recipient_id)
# the dm state is something we use
# to give the currently "open dms"
# on the client.
# we don't open a dm for the peer/recipient
# until the user sends a message.
await try_dm_state(user_id, dm_id)
except UniqueViolationError: