GithubHelp home page GithubHelp logo

ignavan39 / bitcoin-informer-telegram-bot Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 622 KB

Telegram bot that sends the price of bitcoin to channels added by the administrator 🚀⌚

License: MIT License

Shell 3.13% JavaScript 96.87%
bitcoin-price cron cron-jobs jest-tests price-tracker telegram-bot telegram-bot-api

bitcoin-informer-telegram-bot's Introduction

Hi there 👋

About:

  • My name is Ivan, I work 🏢 and write code 💻 all the time
  • Passionate about Web and Distributed Systems
  • Javascript expirience since 2020
  • Golang expirience since 2021
  • Started programming in 2016 in C to solve exam problems

🛠️ languages and tools:

golang javascript javascript clang cpp

expressjs nestjs docker graphql redux react vue vuex

postgresql docker rabbitMQ k8s nginx

📊 Stats

Anurag's GitHub stats

Top Langs

Contacts:

Telegram Badge Email Badge Hh Badge|

bitcoin-informer-telegram-bot's People

Contributors

dependabot[bot] avatar ignavan39 avatar ocultus avatar

Stargazers

 avatar

Watchers

 avatar

bitcoin-informer-telegram-bot's Issues

Оптимизация

30.12

Связано с остальными issues

bitcoin-informer-telegram-bot/controllers/setTitleControllers.js 👎

 let newTitle = `${nowPercentage > 0 ? '🟢': '🔴'}${currency.toUpperCase()} ${currentCurrency}$ ` +
                `${percentage > 0 ? `⬆️ (+${percentage}`: `⬇️(${percentage}`}%|24h)`
  • напрашивается util которая формирует строку - вынести формирование выходной строки в функцию и там использовать if вместо тернарного оператора

#10

messageID = await sendPostController(marketData, vs_currency, channelId)

        for(let i = previousMessageID; i < messageID && previousMessageID !== -1; i++){
            await telegram.deleteMessage(channelId, i)
        }
  • не самый надежный способ удаления сообщений - предлагаю не полагаться на случай а придумать как вылавливать id сообщений вне mainLoop

bitcoin-informer-telegram-bot/controllers/sendPostController.js:-1:

        .sendMessage(
            chatId,
            `${info.name[0].toUpperCase() + info.name.slice(1)} Price $${info.price}
Market Cap $${info.allInfo.market_cap[vsCurrency]} 
Trading Volume $${info.allInfo.total_volume[vsCurrency]}      
Market Cap Rank #${info.allInfo.market_cap_rank}
——————————————
24h Low/ 24h High
$${info.allInfo.low_24h[vsCurrency]}/$${info.allInfo.high_24h[vsCurrency]}
`)
  • настрою prettier для форматирования кода

bitcoin-informer-telegram-bot/servicies/:-1:

  • нейминг сервисов не поделу - переименую

bitcoin-informer-telegram-bot/tests:-1:

  • тесты нужны, когда они рабочие - переделать тесты под переделанные функции

bitcoin-informer-telegram-bot/index.js:-1:

bot.hears(/(\w+) vs (\w+)/, ctx => {
    if(ctx.message.from.id === adminId){
        if(!ctx.update.message.forward_from_chat){
            ctx.reply('Перешлите сообщение из нужного канала')
        } else {
            let channelId = ctx.update.message.forward_from_chat.id
            mainLoop(ctx.match[1], ctx.match[2], channelId)
        }
    }
})
  • вынести hears куда нибудь глубже ( например в общий контроллер - тогда его нужно создать) , вдруг их станет больше : тогда не получиться маштабируемая архитектура

Отправка сообщения

info_message:

вся инфа

title_message:

sendTitle - возрващает id сообщения
editTitle - редачит текущее сообщение

фикс удаления сообщений

30.12

  • предлагаю хранить где нибудь id сообщения (бд, json), потому, что в определенный момент наступает ситуация при которой сообщение не удалилось а новое отправилсоь

image

  • нужно это пофиксить

Фикс поста

  • можно ли скачать картинку ?

если да ->

  • дергать картинку и вставлять в пост

Фикс title

  • уменьшить проценты до двух выводимых чисел

Создать отдельный контроллер для ошибок

30.12

 let hasCurrency = await checkInAllCoins(currency)
    if(!hasCurrency){
        await telegram.sendMessage(channelId, 'Неверное название криптовалюты')
        return;
    }
    let hasVsCurrency = await checkInVsCurrency(vs_currency)
    if(!hasVsCurrency){
        await telegram.sendMessage(channelId, 'Неверно введено название второй валюты')
        return;
    }

    let marketData = await getCurrency(await getIdCurrency(currency), vs_currency)
    if(!marketData){
        await telegram.sendMessage(channelId, 'Не удалось сделать запрос к сервису')
        return
    }
  • вынести весь повторяющийся код в функцию
  • вынести функции чекеров выше ( они здесь ни к чему) о от туда вызывать контроллер ошибки

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.