let ball = document.querySelector("#ball");ball - html элемент со своими top,left,width,heightlet field = document.querySelector("#field");
...
let fieldCoords = field.getBoundingClientRect();field - html элемент со своими top,left,width,heightfieldCoords - размер этого элемента и его позицию относительно viewport (часть страницы, показанная на экране, и которую мы видим).let ballCoords = {
top: event.clientY - fieldCoords.top - field.clientTop - ball.clientHeight/2,
left: event.clientX - fieldCoords.left - field.clientLeft - ball.clientWidth/2
}ballCoords - переменная с координатами top и left. Рассмотрим как они подсчитываются на примере ballCoords.topballCoords.top =event.clientY - расстояние от верхней границы экрана до курсора без учета прокрутки- fieldCoords.top - минус отстояние поля от верхней границы экрана- field.clientTop - минус Толщина верхней границы поля в пикселях- ball.clientHeight/2 - минус пол высоты мячаif(ballCoords.top + ball.clientHeight > field.clientHeight) {
ballCoords.top = field.clientHeight - ball.clientHeight;ballCoords.top + ball.clientHeight это относительная координата нижней границы мяча (относительная потому что отсчитана от верхней границы поля)ballCoords.top = field.clientHeight - ball.clientHeight;ball.style.top = ballCoords.top + "px";
Бот на node-telegram-bot-api.
Нужно изменить сообщение, отправленное телеграм ботом. Как это реализовать?
так, а где происходит инициализация ошибки?
// вызов с ошибкой
setTimeout(func.bind(null, new Error('error'), 'hello world', (err, data) => {
if(err){
console.log('ошибка', err);
}else{
console.log('данные', data);
}
}), 2000);
// вызов без ошибки
setTimeout(func.bind(null, null, 'hello world', (err, data) => {
if(err){
console.log('ошибка', err);
}else{
console.log('данные', data);
}
}), 4000);
Зачем это мне: Чтоб имея диалог бота с чатом получить id диалога. А зная токен бота я уже могу писать через бота сообщения в чат моим софтом.
Зарегистрировал в Botfather тг-бота получил токен бота
const oncreate = once((err, socket) => {
if (err) {
process.nextTick(() => this.emit('error', err));
} else {
this.onSocket(socket);
}
});
try {
const newSocket = optsWithoutSignal.createConnection(optsWithoutSignal,
oncreate);
if (newSocket) {
oncreate(null, newSocket);
}
} catch (err) {
oncreate(err);
}getConnections(callback) {
this._request({
cmd: 'NODE_SOCKET_GET_COUNT',
key: this.key
}, 'NODE_SOCKET_COUNT', false, (err, msg) => {
if (err) return callback(err);
callback(null, msg.count);
});
}function func(err, data, cb) {
if(!err) {
cb(null, data);
} else {
cb(err, data);
}
}
// вызов с ошибкой
setTimeout(func.bind(null, new Error('error'), 'hello world', (err, data) => {
if(err){
console.log('ошибка', err);
}else{
console.log('данные', data);
}
}), 2000);
// вызов без ошибки
setTimeout(func.bind(null, null, 'hello world', (err, data) => {
if(err){
console.log('ошибка', err);
}else{
console.log('данные', data);
}
}), 4000);
так я хочу в элс выводить ошибку, если она у меня выпадет.
setTimeout(func.bind(null, new Error('error') ...if(!err)...