Anonymous
бот
Sergey
Через @botfather настрой бота, чтоб ему все события передавались, и тебе прийдёт апдейт
Anonymous
Ну т.е. все равно нужно у себя локально хранить?
Sergey
А, я думал ты про новых пользователях на канале
Anonymous
У меня есть бот, нотификации отправляет подписанным пользователям
Sergey
Да, все id диалогов нужно локально хранить
Anonymous
Вот что бы отправить нотификации, нужно отправить месадж на чат id. Вот где получить id чатов всех подписанных пользователей, только самому хранить?
Anonymous
Ясно
Anonymous
Грустненько. Ну лан
Anonymous
А я могу как-то слать сообщение не на id чата, а на конкретного пользователя?
Anonymous
Подскажите как, пожалуйста >_>
Willy
Подскажите как, пожалуйста >_>
Вместо айди чата указать логин
Oleg
Всем привет. Такая проблема: - У меня весьма специфичные вкусы и я сейчас пытаюсь сконфигурировать связку node.js + express + typescript + webpack, и не понимаю как сделать hot релоад сервера при изменении файлов, nodemon смотрит на скомпилированный файл, а как запустить перекомпиляцию - хз
Anonymous
Вместо айди чата указать логин
Хм. Попробую, спасибо
undefined
Вместо айди чата указать логин
Не у всех пользователей есть логин, это нужно учесть
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 для поста
Михаил Макарычев
Мне нужно слать нотификацию только 1 человеку, и все
Ты учитываешь тот факт, что бот может писать только тем юзерам, которые начали с ним диалог?
Anonymous
Да
Михаил Макарычев
Да
Отправляй сообщения по telegram_id, а не по нику
from
Ребят, а если представить вот такой код somePromise.then((data) => { someEvent.subscribe(() => { useData(data); }); }); В каком случае data будет уничтожена сборщиком мусора? Никогда, т.к. коллбек сабскрайба может быть вызыван когда угодно? Или если объект someEvent правильно организовал отписки, то GC справится?
Oleg
Запусти webpack-dev-server, пусть он смотрит исходники и пересобирает их, а nodemon уже собранный бандл будет подхватывать.
Webpack-dev-server is great for client side development but it will not deploy Express api's or middleware. So in development I recommend running two separate servers: One for the client and one for your server side api's.
Oleg
https://stackoverflow.com/questions/35233291/running-a-node-express-server-using-webpack-dev-server пишут что так себе способ
arts
https://stackoverflow.com/questions/35233291/running-a-node-express-server-using-webpack-dev-server пишут что так себе способ
Собирать вебпаком для ноды — вообще сомнительная идея.
Oleg
Собирать вебпаком для ноды — вообще сомнительная идея.
ну даааа, но TS по-другому не прикрутить
arts
Алсо, есть tsc-watch
Oleg
опа
Oleg
ща гляну
Oleg
спасибо
Михаил Макарычев
Привет всем. Я пишу тесты с помощью mocha и chai. Хочу протестировать функцию для работы с rss. Она принимает на вход url, а возвращает массив из 25 объектов. Не совсем понимаю, что писать тут: expect(rss(uri)).to.equal(???); Мне надо предварительно создать этот массив из 25 объектов? Я уж молчу про то, что он будет постоянно меняться. И мне при каждом запуске теста надо его обновлять? Или я что-то не так делаю?
Михаил Макарычев
ну даааа, но TS по-другому не прикрутить
Не знаю, что конкретно вам надо, но нода с ts дружится за три строчки: tsc init npm init npm i @types/node -D Или у вас что-то другое?
KlonD90
Ну тебе нужно раздробить это по юнитам. Первый типа удостоверяется что ты делаешь запрос по этому урлу. Дальше стабаешь функцию достающую данные И можешь сравнить результат.
Михаил Макарычев
Ну тебе нужно раздробить это по юнитам. Первый типа удостоверяется что ты делаешь запрос по этому урлу. Дальше стабаешь функцию достающую данные И можешь сравнить результат.
Но в итоге всё равно придётся создавать массив из объектов? Мне повезло, там всего 4 поля, но что бы я делал, если бы БД тестировал? Там же тысячи записей
KlonD90
А что ты хочешь тестировать? Работу базы данных или свой код?
Михаил Макарычев
А что ты хочешь тестировать? Работу базы данных или свой код?
Свой код. Но мне же всё равно надо проверить, правильно ли мой код делает запросы? Вообще это не так важно сейчас. Возвращаясь к моему предыдущему вопросу: мне надо создавать массив из 25 элементов?
KlonD90
Да зачем. У тебя смысл именно в 25 элементах?
Oleg
tsc -w
пишут deprecated
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); });
Михаил Макарычев
https://www.npmjs.com/package/tsc
Да нет же. Устанавливаете typescript и набираете в консоли tsc -w потом
Oleg
Да нет же. Устанавливаете typescript и набираете в консоли tsc -w потом
Оно у меня падает в с огромным числом ошибок
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)?
Anonymous
Канагаттандырылмагандыктарыныздан - это же на казахском "Есть закурить"?
если вы про самое длинное слово на казахском, то вот вам обновление: модернизацияландырылмағантықтарыңыздан смысловой перевод: по причине того, что вы не прошли модернизацию политический привет вам : )
Oleg
А что в консоль вводите предварительно?
Всё, заработало) "start": "npm run tsc-watch | npm run nodemon", "tsc-watch": "tsc -w", "nodemon": "nodemon ./build/bin/www.js localhost 3000"
Михаил Макарычев
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
Привет, кто с jade/pug работал? Как обойти невозможность динамических иклюдов? script("type/javascript) include #{BRAND_NAME}/api.js Так не иклюдит. Кто как обходил это?
Pug не поддерживает динамический include, можете использовать case / if или определять файл для рендера на сервере.