bot.on('message', async (msg) => {
const text = msg.text.toLowerCase()
const chatId = msg.chat.id
const message = 'TEXT'
if (text.match('123')) {
setTimeout(() => {
bot.sendMessage(chatId, message)
.then(msgData=>{
let count = 0;
const timerId = setInterval(() => {
count+=Math.floor(Math.random()*10);
if(count>100){
count=100;
clearInterval(timerId);
}
bot.editMessageText(`${message} (edit) ${count}%`,
{
chat_id: msgData.chat.id,
message_id: msgData.message_id
});
}, 500)
})
}, 500)
}
})
Moscow:
91.243.188.184
91.243.188.114
91.243.188.30
91.243.188.137
SPB:
109.120.128.178
109.120.128.179
109.120.128.180
New IP Moscow:
83.166.240.184
83.166.241.9
83.166.241.120
port: 7951
login/pas: In the account https://www.oplata.info/info/delivery.asp
const filedata = fs.readFileSync('proxy.txt', 'utf-8');
const proxyData = filedata.split(/\s*?\n+\s*/).reduce(
(acc, line)=>{
if( /\w+:$/.test(line)){
acc.location = line;
}else if( /port:\s*\d+/.test(line)){
acc.port = line.replace(/\D+/g,'');
}else if( /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.test(line)){
acc.list.push({
ip: line,
location: acc.location
});
}
return acc;
},
{
list:[],
location: undefined,
port: undefined
}
);
const targetProxy = proxyData.list.map(item => item.ip + ':' + proxyData.port);
console.log(targetProxy)
// 91.243.188.184:7951
// 91.243.188.114:7951
// 91.243.188.30:7951
// 91.243.188.137:7951
// 109.120.128.178:7951
// 109.120.128.179:7951
// 109.120.128.180:7951
// 83.166.240.184:7951
// 83.166.241.9:7951
// 83.166.241.120:7951
names = appData.filter(function (x) { return skipped.indexOf(x) < 0; })
get("https://serv.io/set?" + names.join("|")).then(function (data) {
result = JSON.parse(data);
Object.entries(result).forEach(([name,{act, total}])=>{
console.log(name,act,total) // переменные name,act,total тут локальны, но сами уже разберетесь
});
fs.writeFile(file, data[, options], callback)#
History:
- file
<string> | <Buffer> | <URL> | <integer>
filename or file descriptor- data
<string> | <Buffer> | <TypedArray> | <DataView> | <Object>
- options
<Object> | <string>
- encoding
<string> | <null>
Default: 'utf8'- mode
<integer>
Default: 0o666- flag
<string>
See support of file system flags. Default: 'w'.- signal
<AbortSignal>
allows aborting an in-progress writeFile- callback
<Function>
- err
<Error> | <AggregateError>
When file is a filename, asynchronously writes data to the file, replacing the file if it already exists. data can be a string or a buffer.
When file is a file descriptor, the behavior is similar to calling fs.write() directly (which is recommended). See the notes below on using a file descriptor.
The encoding option is ignored if data is a buffer.
If data is a plain object, it must have an own (not inherited) toString function property.
...
fs.write
). После этого нужные пункты оглавления подсветятся желтым и вы легко найдете нужный. Merge Vertices -> by distance
. Merge by distance
(как на картинке), в нем поиграйте параметром Merge distance. Чем больше этот параметр, тем более далекие друг от друга точки будут объеденены в одну.wget -r -k -l 7 -p -E -nc https://wooordhunt.ru/
this.mouseOverStar.bind(this)
не равно this.mouseOverStar.bind(this)
и неравно this.mouseOverStar
function test(){
console.log("test");
}
// проверим
console.log(test===test.bind(this)); // false
console.log(test.bind(this)===test.bind(this)); //false
// а как тогда?
const test_bind = test.bind(this);
console.log(test===test); // true
console.log(test_bind===test_bind); //true
<script src="assets/js/listeners.js" defer></script>
<script src="assets/js/ajax_popup.js" defer></script>
document.querySelector('.notification').addEventListener("click", e => {
send_request(e);
}, false);
document.querySelector('.event__button span').addEventListener("click", hide_popup, false);
document.querySelector('.popup__close').addEventListener("click", hide_popup, false);
drawGame(...)
). Как бонус - данный пример работает в несколько десятков раз быстрее, и позволяет ставить блоки нестандартного размера)))