Skip to content

๐Ÿ‡ณ Free and Open-source Telegram bot to use the services of Ncell App.

License

Notifications You must be signed in to change notification settings

hemantapkh/ncellbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

70 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Stars Forks visitors Contributors Subscribe my channel H9

Ncell Bot

๐Ÿค– Ncell Chat Bot for Telegram

Ncell bot is a free and open-source telegram bot to use the services of the Ncell App. You can use services like sending SMS, transferring balance, and many more which are not available in the official Ncell chatbot.


โœ”๏ธ TODO

  • Account sharing
  • Balance transfer
  • Call History
  • Recharge history

๐Ÿ” Privacy

The bot is designed in a way to protect the privacy of users. You can learn more about this topic here.


โš™๏ธ Deployment

Currently, the latest version of Ncell App is not open-sourced yet. I will try to release a new version as soon as possible.

  • Clone the repository, create a virtual environment, and install the requirements

    git clone https://github.com/hemantapkh/ncellbot && virtualenv ncellenv && source ncellenv/bin/activate && cd ncellbot && pip install -r requirements.txt
  • Add your bot token in config.json file

  • Run the migration.py file to open a database.

    python migrations.py
  • Now, start the bot polling

    python telegrambot.py

๐Ÿš€ Webhook Deployment

While polling and webhooks both accomplish the same task, webhooks are far more efficient. Polling sends a request for new events (specifically, Create, Retrieve, and Delete events, which signal changes in data) at a predetermined frequency and waits for the endpoint to respond whereas, webhooks only transfer data when there is new data to send, making them 100% efficient. That means that polling creates, on average, 66x more server load than webhooks. (r)

  • Generate an SSL certificate

    >> openssl genrsa -out sslPrivateKey.pem 2048
    >> openssl req -new -x509 -days 3650 -key sslPrivateKey.pem -out sslCertificate.pem

    "Common Name (e.g. server FQDN or YOUR name)" should be your Host IP.

  • Edit config.json file and set

    • connectionType == webhook
    • webhookHost = IP/Host where the bot is running
    • webhookPort = PORT (Need to be opened)
    • webhookListen = 0.0.0.0 or IP address in some VPS
    • sslCertificate = Directory of SSL certificate
    • sslPrivateKey = Directory of SSL private key
  • And, start the aioHttp server.

    python telegrambot.py

๐Ÿ›บ Auto deployment on every push

You can set up GitHub actions to update the bot automatically on every push.

  • Fork the repository on your GitHub account.

  • Create a directory

    mkdir /opt/ncell

    You should create a directory with the same name as above inside /opt, or edit the deploy.yml and deployScript.sh

  • Create a virtual environment in the directory with name ncellenv

    virtualenv ncellenv
  • Clone the repository and install the requirements in the virtual environment

    git clone https://github.com/hemantapkh/ncellbot && cd ncellbot && source /opt/ncell/ncellenv/bin/activate && pip install -r requirements.txt
  • Create a database and move the database into /opt/ncell

    python migrations.py && mv database.sqlite /opt/ncell
  • Generate SSH keys for your VPS and keep the private key in your GitHub secrets

    • Create the ssh key pair using the ssh-keygen command. You must leave the passphrase empty while generating the SSH key.
    • Copy and install the public ssh key on the server using sh-copy-id -i your_public_key user@host command.
    • Now, copy the content of the private key and paste it on your GitHub secrets with the name SSHKEY. (Repository settings >> secrets >> New repository secret)
  • Create another GitHub secret with name HOST and save your Host IP.

  • Edit config.json file and set

    • database = /opt/ncell/database.sqlite
    • errorLog = /opt/ncell/telegram.errors.logs
    • If you are using webhooks, copy the SSL certificate and private key in /opt/ncell and set
      • sslCertificate == /opt/ncell/sslCertificate.pem
      • sslPrivateKey == /opt/ncell/sslPrivateKey.pem
  • Copy the content of the edited config.json and save it on your repository secrets with name CONFIG. Don't forget to wrap the content of config file with single quotes like this 'Content of config.json'.

  • And, start the bot.

    source /opt/ncell/ncellenv/bin/activate && screen -dm python /opt/ncell/ncellbot/telegrambot.py

Now, every time you push on the main branch, the bot automatically gets updated.


๐Ÿ’š Contributing

Any contributions you make are greatly appreciated.

For minor fix, you can directly create a pull request and for adding a new feature, let's first discuss it in our telegram group or in GitHub Discussion.


๐Ÿ”‘ License

Distributed under the MIT License. See LICENSE for more information.


Made using Ncell App and pyTelegramBotApi in Python๐Ÿ’™ by Hemanta Pokharel [โœ‰๏ธ ๐Ÿ’ฌ ๐Ÿ“บ]

About

๐Ÿ‡ณ Free and Open-source Telegram bot to use the services of Ncell App.

Topics

Resources

License

Stars

Watchers

Forks