@darkwolf/telegram-bot.lazy.cjs
Version:
Telegram Bot API
161 lines (144 loc) • 4.54 kB
JavaScript
const Helper = require('@darkwolf/helper.cjs')
const errors = require('../errors')
const constants = require('../constants')
class PromoteChatMemberRequest {
constructor(parameters = {}, context) {
this.queryMethod = PromoteChatMemberRequest.queryMethod
this
.setContext(context)
.setId(parameters.id)
.setUserId(parameters.userId)
.setAnonymous(parameters.anonymous)
.setCanChangeInfo(parameters.canChangeInfo)
.setCanPostMessages(parameters.canPostMessages)
.setCanEditMessages(parameters.canEditMessages)
.setCanDeleteMessages(parameters.canDeleteMessages)
.setCanInviteUsers(parameters.canInviteUsers)
.setCanRestrictMembers(parameters.canRestrictMembers)
.setCanPinMessages(parameters.canPinMessages)
.setCanPromoteMembers(parameters.canPromoteMembers)
}
setContext(context = {}) {
this.context = context
return this
}
setId(id) {
this.id = id
return this
}
setUserId(id) {
this.userId = id
return this
}
setAnonymous(boolean) {
this.anonymous = boolean
return this
}
setCanChangeInfo(boolean) {
this.canChangeInfo = boolean
return this
}
setCanPostMessages(boolean) {
this.canPostMessages = boolean
return this
}
setCanEditMessages(boolean) {
this.canEditMessages = boolean
return this
}
setCanDeleteMessages(boolean) {
this.canDeleteMessages = boolean
return this
}
setCanInviteUsers(boolean) {
this.canInviteUsers = boolean
return this
}
setCanRestrictMembers(boolean) {
this.canRestrictMembers = boolean
return this
}
setCanPinMessages(boolean) {
this.canPinMessages = boolean
return this
}
setCanPromoteMembers(boolean) {
this.canPromoteMembers = boolean
return this
}
toParams() {
const params = {}
if (this.id) {
params.chat_id = this.id
}
if (this.userId) {
params.user_id = this.userId
}
if (Helper.exists(this.anonymous)) {
params.is_anonymous = this.anonymous
}
if (Helper.exists(this.canChangeInfo)) {
params.can_change_info = this.canChangeInfo
}
if (Helper.exists(this.canPostMessages)) {
params.can_post_messages = this.canPostMessages
}
if (Helper.exists(this.canEditMessages)) {
params.can_edit_messages = this.canEditMessages
}
if (Helper.exists(this.canDeleteMessages)) {
params.can_delete_messages = this.canDeleteMessages
}
if (Helper.exists(this.canInviteUsers)) {
params.can_invite_users = this.canInviteUsers
}
if (Helper.exists(this.canRestrictMembers)) {
params.can_restrict_members = this.canRestrictMembers
}
if (Helper.exists(this.canPinMessages)) {
params.can_pin_messages = this.canPinMessages
}
if (Helper.exists(this.canPromoteMembers)) {
params.can_promote_members = this.canPromoteMembers
}
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: chat not found': {
error = new errors.ChatNotFoundError(this.id).setResponse(response)
break
}
case 'Bad Request: user not found': {
error = new errors.UserNotFoundError(this.userId).setResponse(response)
break
}
default: {
error = new errors.BadRequestError(response.description).setResponse(response)
}
}
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
}
}
PromoteChatMemberRequest.queryMethod = 'promoteChatMember'
PromoteChatMemberRequest.from = (parameters, context) => new PromoteChatMemberRequest(parameters, context)
module.exports = PromoteChatMemberRequest