import Telegraf from 'telegraf' import { saveChat, getChats } from './database' import { TYPE_JOIN, TYPE_DEATH, DEATH_TYPE_CONTACT, DEATH_TYPE_BLOCK_EXPLOSION, DEATH_TYPE_ENTITY_ATTACK, DEATH_TYPE_ENTITY_SWEEP_ATTACK, DEATH_TYPE_PROJECTILE, DEATH_TYPE_FALL, DEATH_TYPE_FIRE, DEATH_TYPE_FIRE_TICK, DEATH_TYPE_SUFFOCATION, DEATH_TYPE_MELTING, DEATH_TYPE_LAVA, DEATH_TYPE_DROWNING, DEATH_TYPE_ENTITY_EXPLOSION, DEATH_TYPE_VOID, DEATH_TYPE_LIGHTNING, DEATH_TYPE_SUICIDE, DEATH_TYPE_STARVATION, DEATH_TYPE_POISON, DEATH_TYPE_MAGIC, DEATH_TYPE_FALLING_BLOCK, DEATH_TYPE_THORNS, DEATH_TYPE_DRAGON_BREATH, DEATH_TYPE_CUSTOM, DEATH_TYPE_HOT_FLOOR, DEATH_TYPE_FLY_INTO_WALL, DEATH_TYPE_CRAMMING, DEATH_TYPE_DRYOUT } from './types' const bot = new Telegraf('643297173:AAGuqfZx3GhiiARwvY7AtWTTFw1T-2FiwCM') bot.start(({ message: { chat: { id } } }) => saveChat(id)) bot.launch() const sendMessageToAll = text => { getChats() .then(chats => chats.map(({ chatId }) => chatId)) .then(chatIds => { for (let id of chatIds) { bot.telegram.sendMessage(id, text) } }) } const getEntityDeathMessage = payload => { switch (payload.deathType) { case DEATH_TYPE_CONTACT: return 'умер от соприкосновения' case DEATH_TYPE_BLOCK_EXPLOSION: return 'взорвался' case DEATH_TYPE_ENTITY_ATTACK: return 'умер от существа' case DEATH_TYPE_ENTITY_SWEEP_ATTACK: return 'умер от урона по области' case DEATH_TYPE_PROJECTILE: return 'застрелили' case DEATH_TYPE_SUFFOCATION: return 'сплющило' case DEATH_TYPE_FALL: return 'упал насмерть' case DEATH_TYPE_FIRE: return 'сгорел' case DEATH_TYPE_FIRE_TICK: return 'умер от ожогов' case DEATH_TYPE_MELTING: return 'замерз' case DEATH_TYPE_LAVA: return 'от лавы' case DEATH_TYPE_DROWNING: return 'утонул' case DEATH_TYPE_ENTITY_EXPLOSION: return 'взорван вместе с существом' case DEATH_TYPE_VOID: return 'упал в бездну' case DEATH_TYPE_LIGHTNING: return 'скончался от удара молнией' case DEATH_TYPE_SUICIDE: return 'совершил самоубийство' case DEATH_TYPE_STARVATION: return 'скончался от голода' case DEATH_TYPE_POISON: return 'умер от яда' case DEATH_TYPE_MAGIC: return 'умер от магии' case DEATH_TYPE_FALLING_BLOCK: return 'погиб под упавшим блоком' case DEATH_TYPE_THORNS: return 'умер от шипов' case DEATH_TYPE_DRAGON_BREATH: return 'убит драконом' case DEATH_TYPE_CUSTOM: return '' case DEATH_TYPE_FLY_INTO_WALL: return 'убил сибя ап стену' case DEATH_TYPE_HOT_FLOOR: return 'не увидел, что пол - магма' case DEATH_TYPE_CRAMMING: return '' case DEATH_TYPE_DRYOUT: return '' } } export const sendEvent = ({ type, ...payload }) => { switch (type) { case TYPE_JOIN: sendMessageToAll(`Игрок ${payload.displayName} присоединился!`) break case TYPE_DEATH: console.log({ payload }) sendMessageToAll(`Игрок ${payload.displayName} ${getEntityDeathMessage(payload)}. Убийца: ${payload.killerName}`) break } }