Lichess4545/Chesster

View on GitHub
src/commands/presence.ts

Summary

Maintainability
A
2 hrs
Test Coverage
// -----------------------------------------------------------------------------
// Commands and helpers for detecting presence
// -----------------------------------------------------------------------------
import _ from 'lodash'

import * as heltour from '../heltour'
import { SlackBot, CommandMessage } from '../slack'
import { isDefined } from '../utils'

export async function ambientPresence(bot: SlackBot, message: CommandMessage) {
    if (!message.channel.is_mpim) {
        return
    }
    const sender = bot.users.getByNameOrID(message.user)
    if (!isDefined(sender)) {
        return
    }
    if (!isDefined(bot.controller)) {
        return
    }

    const membersResponse = await bot.getChannelMemberList(message.channel)
    const recips = _.without(
        membersResponse.members,
        bot.controller.id,
        sender.id
    )
    if (recips.length !== 1) {
        return
    }
    const player = bot.getSlackUserFromNameOrID(recips[0])
    if (!player) {
        return
    }

    return await heltour.playerContact(
        bot.config.heltour,
        sender.lichess_username,
        player.lichess_username
    )
}