Anonymous
бот
Sergey
Через @botfather настрой бота, чтоб ему все события передавались, и тебе прийдёт апдейт
Anonymous
Ну т.е. все равно нужно у себя локально хранить?
Sergey
А, я думал ты про новых пользователях на канале
Anonymous
У меня есть бот, нотификации отправляет подписанным пользователям
Sergey
Да, все id диалогов нужно локально хранить
Anonymous
Вот что бы отправить нотификации, нужно отправить месадж на чат id. Вот где получить id чатов всех подписанных пользователей, только самому хранить?
Anonymous
Ясно
Anonymous
Грустненько. Ну лан
Anonymous
А я могу как-то слать сообщение не на id чата, а на конкретного пользователя?
Willy
Anonymous
Подскажите как, пожалуйста >_>
Willy
Oleg
Всем привет. Такая проблема:
- У меня весьма специфичные вкусы и я сейчас пытаюсь сконфигурировать связку node.js + express + typescript + webpack, и не понимаю как сделать hot релоад сервера при изменении файлов, nodemon смотрит на скомпилированный файл, а как запустить перекомпиляцию - хз
Anonymous
Willy
arts
Oleg
Cenator 🐈
Cenator 🐈
правда его просто так не посмотришь, но через api может быть можно
Anonymous
400 Bad Request: chat not found
Anonymous
const TelegramBot = require('node-telegram-bot-api');
const bot = new TelegramBot(token, {polling: true});
function sendMsg(msg) {
bot.sendMessage('@nodejs_ru', 'msg')
}
Михаил Макарычев
400 Bad Request: chat not found
1) Ты можешь слать только в те чаты, в которых состоит бот
2) Только совсем отбитые шлют сообщения не через telegram_id, а через ники
Камиль
Ребят можете код глянуть?
exports.create = (req, res, nest) => {
const endpoint_data = validateBody(req.body)
const postId = req.params.endpoint_id
Post.findById(postId)
.then((post) => {
saveEventLog(req, false, 'endpoint create successfully') res.status(201).send({.id: post.id })
})
}
Anonymous
Я и себе слал, тоже самое
Anonymous
Мне нужно слать нотификацию только 1 человеку, и все
Камиль
я пишу рест для получения endpoint для поста
Anonymous
Да
Михаил Макарычев
Да
Отправляй сообщения по telegram_id, а не по нику
from
Ребят, а если представить вот такой код
somePromise.then((data) => {
someEvent.subscribe(() => {
useData(data);
});
});
В каком случае data будет уничтожена сборщиком мусора? Никогда, т.к. коллбек сабскрайба может быть вызыван когда угодно? Или если объект someEvent правильно организовал отписки, то GC справится?
Oleg
https://stackoverflow.com/questions/35233291/running-a-node-express-server-using-webpack-dev-server пишут что так себе способ
arts
Oleg
arts
Oleg
arts
Алсо, есть tsc-watch
Oleg
опа
Oleg
ща гляну
Oleg
спасибо
Михаил Макарычев
Привет всем. Я пишу тесты с помощью mocha и chai. Хочу протестировать функцию для работы с rss. Она принимает на вход url, а возвращает массив из 25 объектов. Не совсем понимаю, что писать тут:
expect(rss(uri)).to.equal(???);
Мне надо предварительно создать этот массив из 25 объектов? Я уж молчу про то, что он будет постоянно меняться. И мне при каждом запуске теста надо его обновлять?
Или я что-то не так делаю?
Oleg
KlonD90
Ну тебе нужно раздробить это по юнитам. Первый типа удостоверяется что ты делаешь запрос по этому урлу. Дальше стабаешь функцию достающую данные И можешь сравнить результат.
Oleg
Михаил Макарычев
Михаил Макарычев
KlonD90
А что ты хочешь тестировать? Работу базы данных или свой код?
KlonD90
Да зачем. У тебя смысл именно в 25 элементах?
Oleg
Oleg
https://www.npmjs.com/package/ntypescript Вот такая либа вместо него
Oleg
а не, он тоже мертв
Oleg
https://github.com/basarat/byots
Михаил Макарычев
Да зачем. У тебя смысл именно в 25 элементах?
Какие-то философские вопросы. Вообще смысл в том, чтобы проверить, что при запросе на указанный url мне прилетает массив объектов с определёнными полями. Количество и содержимое не так важно
Михаил Макарычев
пишут deprecated
Странно
Можно ссылку?
Я использовал  tsc -w. Всё нормально было
Kons
Когда тестируется функционал конкретной функции, то это называется юнит-тест. Для юнит тестов создается фиктивное окружение, которое эмулирует «идеальные» или, наоборот, «неидеальные» условия, в которых функция может быть использована. Т.е. делать в этом случае реальный запрос к реальной БД смысла нет, ведь данные не важны. Создается тестовый набор данных (фикстуры, fixtures), которые «скармливаются» тестируемой функции и уже после выполнения функции, проверяется её вывод.
const rss = <ТЕЛО АСИНХРОННОЙ ФУНКЦИИ>;
...
// Где-то в тестах
const result = rss(url);
expect(result).to.be.instanceof(Promise);
result.then((data) => {
expect(data).to.be.an('array');
expect(data).to.have.length(25);
});
Oleg
Oleg
Oleg
Oleg
typings/globals/core-js/index.d.ts(18,43): error TS1005: ';' expected.
typings/globals/core-js/index.d.ts(27,27): error TS1005: ',' expected.
Ivan
Меня не забанят за вопросы по (компьютерным сетям/nginx)?
Михаил Макарычев
Когда тестируется функционал конкретной функции, то это называется юнит-тест. Для юнит тестов создается фиктивное окружение, которое эмулирует «идеальные» или, наоборот, «неидеальные» условия, в которых функция может быть использована. Т.е. делать в этом случае реальный запрос к реальной БД смысла нет, ведь данные не важны. Создается тестовый набор данных (фикстуры, fixtures), которые «скармливаются» тестируемой функции и уже после выполнения функции, проверяется её вывод.
const rss = <ТЕЛО АСИНХРОННОЙ ФУНКЦИИ>;
...
// Где-то в тестах
const result = rss(url);
expect(result).to.be.instanceof(Promise);
result.then((data) => {
expect(data).to.be.an('array');
expect(data).to.have.length(25);
});
Спасибо большое. Понял, что мне делать
Михаил Макарычев
Oleg
А что в консоль вводите предварительно?
Всё, заработало)
"start": "npm run tsc-watch | npm run nodemon",
"tsc-watch": "tsc -w",
"nodemon": "nodemon ./build/bin/www.js localhost 3000"
Михаил Макарычев
Oleg
Anonymous
Вот тут ошибка TypeError, нода валится
Anonymous
Почему catch не срабатывает?
Kons
await перед вызовом функции поставить надо
Anonymous
Спасибо!
Kons
const D3Available = await checkD3()
Anonymous
Ага, заработало
Anonymous
Понять бы еще это...
Dreamerinnoise
Привет, кто с jade/pug работал? Как обойти невозможность динамических иклюдов?
script("type/javascript)
include #{BRAND_NAME}/api.js
Так не иклюдит. Кто как обходил это?
Yar