first version, join and very basic death messages

This commit is contained in:
smsteel
2019-02-06 18:25:50 +03:00
parent cd361a3740
commit ac91a5325c
7 changed files with 919 additions and 30 deletions

97
bot.js Normal file
View File

@ -0,0 +1,97 @@
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
}
}