UNPKG

@darkwolf/telegram-bot.lazy.cjs

Version:
130 lines (117 loc) 3.63 kB
const Helper = require('@darkwolf/helper.cjs') const errors = require('../errors') const constants = require('../constants') class AnswerInlineQueryRequest { constructor(parameters = {}, context) { this.queryMethod = AnswerInlineQueryRequest.queryMethod this .setContext(context) .setId(parameters.id) .setResults(parameters.results) .setPersonal(parameters.personal) .setNextOffset(parameters.nextOffset) .setSwitchPmText(parameters.switchPmText) .setSwitchPmParameter(parameters.switchPmParameter) .setCacheTime(parameters.cacheTime) } setContext(context = {}) { this.context = context return this } setId(id) { this.id = id return this } setResults(results) { this.results = results return this } setPersonal(boolean) { this.personal = boolean return this } setNextOffset(cursor) { this.nextOffset = cursor return this } setSwitchPmText(text) { this.switchPmText = text return this } setSwitchPmParameter(parameter) { this.switchPmParameter = parameter return this } setCacheTime(duration) { this.cacheTime = duration return this } toParams() { const params = {} if (this.id) { params.inline_query_id = this.id } if (this.results) { params.results = this.results.map(result => result.toParams()) } if (Helper.exists(this.personal)) { params.is_personal = this.personal } if (Helper.exists(this.nextOffset)) { params.next_offset = this.nextOffset } if (Helper.exists(this.switchPmText)) { params.switch_pm_text = this.switchPmText } if (this.switchPmParameter) { params.switch_pm_parameter = this.switchPmParameter } if (Helper.exists(this.cacheTime)) { params.cache_time = this.cacheTime } return params } async send() { const response = await this.context.telegramBot.request(this) if (response) { if (response.ok) { this.context.telegramBot.emit(constants.EventType.RESPONSE, response) return response.result } else { let error switch (response.errorCode) { case 400: { switch (response.description) { case 'Bad Request: query is too old and response timeout expired or query ID is invalid': { error = new errors.InvalidInlineQueryError(this.id).setResponse(response) break } default: { error = new errors.BadRequestError(response.description).setResponse(response) } } break } case 403: { switch (response.description) { case 'Forbidden: USER_BOT_INVALID': { error = new errors.InlineModeDisabledError(this.context.telegramBot.token).setResponse(response) break } } break } } if (!error) { error = new errors.UnknownError(response.description).setResponse(response) } this.context.telegramBot.emit(constants.EventType.ERROR, error) if (!this.context.telegramBot.settings.ignoreErrors) throw error } } return null } } AnswerInlineQueryRequest.queryMethod = 'answerInlineQuery' AnswerInlineQueryRequest.from = (parameters, context) => new AnswerInlineQueryRequest(parameters, context) module.exports = AnswerInlineQueryRequest