Skip to content

boolfalse/simple-question-complex-answer

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

A Simple Question => A Complex Answer


A Telegram bot that answers your questions with a voice message.

sqca

A Simple Question => A Complex Answer

Prerequisites:

Installation:

  • Create a new AWS IAM user, give it access to Polly.

  • Create a new Telegram bot with @BotFather.

  • Create a new Telegram channel and add the bot as an admin.

  • Create a new MongoDB Atlas cluster and set up IP whitelist.

  • Have a Google Bard account. In a browser open inspect element. __Secure-1PSID, __Secure-1PSIDTS cookie values from Application -> Cookies -> https://accounts.google.com

  • Clone the repo and install dependencies:

git clone git@github.com:boolfalse/simple-question-complex-answer.git && cd simple-question-complex-answer/
npm install
  • Install python dependencies (you may use pip3 instead of pip for your case):
pip install SpeechRecognition
pip install bardapi
pip install --upgrade GoogleBard
  • Create a .env file in the root directory of the project and add the following:
# @BotFather token here
TELEGRAM_BOT_TOKEN=""

# Usually it's "python3" or kind of "/usr/local/bin/python3.10"
PYTHON_EXEC_PATH="python3"

# Copy values and add it here respectively
GOOGLE_BARD_SECURE_1PSID=""
GOOGLE_BARD_SECURE_1PSIDTS=""

# AWS IAM user keys
AWS_ACCESS_KEY=""
AWS_SECRET_KEY=""

# MongoDB Atlas connection string
MONGODB_URI="mongodb+srv://<USER>:<PASSWORD>@cluster0.mzcsh.mongodb.net/<DB_NAME>?retryWrites=true&w=majority"
  • Run the app:
    • Development:
    npm run dev
    • Production:
    npm run start
    • Command samples on production:
    # start
    forever start -c "npm run start" ./
    # list
    forever list
    # stop
    forever stop <pid>

TODOs:

  • Add used resources to the "Resources" section
  • Refactor codebase (middlewares)
  • Logging/error-handling (file writing, Slack/Telegram notification)
  • Modify DB for multiple sessions
  • Add "/new" command with session management
  • Add command to leave chat
  • Add invitation functionality
  • Add usage limit to non-invited users
  • Queue messages to avoid any 3rd party APIs limitations
  • Use messaging system (e.g. Kafka, RabbitMQ)

Resources:

Author: