├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── dependabot.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── minigames ├── Readme.md ├── games │ ├── chess.py │ ├── drifthunters.py │ ├── ninja.py │ ├── skribbl.py │ ├── smashkarts.py │ └── venge.py └── minigamesmanager.py ├── requirements.txt ├── scripts ├── FeatureExecution.py ├── Hotword │ ├── assistant_direct.py │ ├── awake.py │ └── hotword_detection.pyw ├── api_keys.py ├── console.py ├── datetoday.py ├── dialogue.py ├── inputmode.py ├── knickassistant.py ├── speech.py ├── standardfunctions.py ├── startingengine.py └── trends.py ├── soundeffects └── sfx │ ├── born.mp3 │ ├── cityname.mp3 │ ├── done.wav │ ├── error.mp3 │ ├── ga.mp3 │ ├── ge.mp3 │ ├── gm.mp3 │ ├── howcanihelpyounow.mp3 │ ├── intro.wav │ ├── introduction.mp3 │ ├── logoff.mp3 │ ├── news.mp3 │ ├── notification.mp3 │ ├── powerdown.mp3 │ ├── reply_to_hello.mp3 │ ├── replytohello.mp3 │ ├── responses.wav │ ├── shutdown.mp3 │ ├── shuttingdown.mp3 │ ├── slogan.mp3 │ ├── startingengine.mp3 │ ├── startingviewbot.mp3 │ ├── systemdown.mp3 │ └── taskcompleted.mp3 └── viewbot ├── README.md ├── livebot.exe └── proxy_url.txt /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Additional context** 27 | Add any other context about the problem here. 28 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "pip" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "weekly" 12 | 13 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | [Knick Support Discord Server](https://discord.com/invite/2X4WThB64b). 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | * Pull Requests (PRs) are welcome :relaxed: 3 | * For major changes, please discuss on [discussions](https://github.com/iamDyeus/KnickAI/discussions) about what you would like to change. 4 | * Try to add useful comments 5 | * Please make sure to update tests as appropriate. 6 | * If you can, then you should join the discord server [here](https://discord.gg/2X4WThB64b) 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 iamDyeus 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![knick banner](https://user-images.githubusercontent.com/87000693/147037011-0de85407-236b-46ae-b104-6762555624ec.png) 2 | 3 | 4 | ![starts](https://img.shields.io/github/stars/iamDyeus/KnickAI) 5 | ![issues](https://img.shields.io/github/issues/iamDyeus/KnickAI) 6 | ![forks](https://img.shields.io/github/forks/iamDyeus/KnickAI) 7 | ![social](https://img.shields.io/github/license/iamDyeus/KnickAI) 8 | 9 | [![forthebadge](https://forthebadge.com/images/badges/made-with-python.svg)](https://forthebadge.com) 10 | [![forthebadge](https://forthebadge.com/images/badges/open-source.svg)](https://forthebadge.com) 11 | 12 | # About Knick - An AI Assistant 🧠 13 | [Knick](http://bit.ly/knickassistant) is a virtual artificial intelligence project, fully developed in Python. It can handle our minor, intermediate as well as heavy tasks which we usually don’t want to do or don't wish to do. 14 | ## Requirements 15 | * Operation system: **Windows** 16 | * Python Version: **3.9.x** 17 | ### Required Modules 18 | * Use the package manager [pip](https://pip.pypa.io/en/stable/) to install all the Required Modules. 19 | ```bash 20 | pip install -r requirements.txt 21 | ``` 22 | ### Required API's 23 | All the API's mentioned below are Free 24 | * [Wolframalpha API](https://products.wolframalpha.com/api/) 25 | * [OpenWeather API](https://openweathermap.org/api) 26 | * [Chatbot API](https://api-info.pgamerx.com/) 27 | 28 | 29 | # Assistant Skills And Features 30 | ### Skills 31 | * **Opens a web page** (e.g 'open youtube' or 'open instagram' or Whatsapp,discord,github,facebook,stackoverflow etc) 32 | * **Play Music/Videos on Youtube** (e.g 'open youtube and search for') 33 | * **Check your Emails**(e.g 'open my inbox' or 'open sent mails') 34 | * **Search all the wikipedia for your Query** (e.g 'search on wikipedia about..' or 'who is (person)') 35 | * **Tells about something**, by searching on the internet (e.g 'search on google about... ') 36 | * **Tells the weather** for a place (e.g 'tell me the weather') 37 | * **Tells the current time and/or date** (e.g 'tell me time or date') 38 | * **Can Generate an Insult for you** (e.g 'insult me') 39 | * **Integrated Chatbot** for making it more user friendly (e.g 'Lets Chat') 40 | * **Tells you Dev jokes** (e.g 'tell me a joke') 41 | * **Tells the daily news** from Times of India (e.g ' tell me today news ') 42 | * **Spells a word** (e.g 'can you pronounce a word for me') 43 | * **Note/Remeber something** (e.g 'make a note') 44 | * **Can Take Screenshots** (e.g 'Take Screenshot') 45 | * **Can open snipping Tool** (e.g 'Open snipping tool') 46 | * **Fun Conversions** (Image to ASCII,Text to Handwriting) (e.g 'convert image to ascii' or 'convert text into handriting') 47 | * **Tells everything it can do** (e.g 'tell me your commands') 48 | * **Can answer to computational as well as geographical Questions** using wolfram API (e.g 'i want to ask some Question') 49 | * **Integrated With Minigames** (e.g 'lets play games') 50 | * **Clear system Cache** (e.g 'Clear Cache') 51 | * **Youtuber Commands (Youtube studio, Youtube Live Dashboard)** (e.g 'open youtube studio' , 'open youtube live dashboard') 52 | * **Integrated with Youtube ViewBot** (e.g 'open viewbot') 53 | * **Can Do Keyword Research** with the help of Google Trends (e.g 'lets do some keyword research') 54 | * **Can open Windows Dictation option** (e.g 'i want to dictate') 55 | 56 | ### Features 57 | * **Supports working in Background and activation on Hotword.** (e.g 'Hibernate' or 'sleep') 58 | * **Can change the Input Mode Anytime** i.e text input or Speech Input (e.g 'change input mode') 59 | * **Exit/Quit the Assistant** (e.g 'bye knick, see you soon!') 60 | * **Pause the Assistant** for a while (e.g 'knick pause for a while') 61 | * **Support Assistance** for helping the user encounting any error/bug (e.g 'knick open support assistance') 62 | 63 | ## Contributing 64 | * Pull Requests (PRs) are welcome :relaxed: 65 | * For major changes, please discuss on [discussions](https://github.com/iamDyeus/KnickAI/discussions) about what you would like to change. 66 | * Try to add useful comments 67 | * Please make sure to update tests as appropriate. 68 | 69 | ## License 70 | [MIT](https://choosealicense.com/licenses/mit/) 71 | -------------------------------------------------------------------------------- /minigames/Readme.md: -------------------------------------------------------------------------------- 1 | ![KnickAI_minigames](https://user-images.githubusercontent.com/87000693/147389075-8db125bd-edb4-4592-97f6-425e366c3660.png) 2 | 3 | 4 | ## MiniGames For Knick Assistant 5 | #### Currently Available games : 6 | - Venge 7 | - Drift Hunters 8 | - chess 9 | - Smash Karts 10 | - skribbl 11 | 12 | 13 | 14 | ## To add a New Game : 15 | Send me the name as well as the link for your game in [this Discussion](https://github.com/iamDyeus/KnickAI/discussions/11) 16 | 17 | -------------------------------------------------------------------------------- /minigames/games/chess.py: -------------------------------------------------------------------------------- 1 | #https://www.chess.com/play/online 2 | 3 | 4 | import webbrowser 5 | 6 | print("opening chess.com in your browser...") 7 | webbrowser.open("https://www.chess.com/play/online") 8 | print("\n") -------------------------------------------------------------------------------- /minigames/games/drifthunters.py: -------------------------------------------------------------------------------- 1 | #https://drift-hunters.co/ 2 | 3 | import webbrowser 4 | 5 | print("About Drift Hunters :") 6 | print("Drift Hunters is a completely free online drifting game\nwhere you have a chance to meet various supercars and proudly glide through them.\nPowered by the UNITY engine, this game will give you a whole new 3D physics world with unprecedented stable frame rates.\n") 7 | 8 | print("\nSome Standard Controls :") 9 | print("Use the WASD keys to move around the world.") 10 | print("use c to change the camera view.") 11 | print("use space to Apply brakes.") 12 | 13 | 14 | print("\n\nopening Drift Hunters in your browser...") 15 | webbrowser.open("https://drift-hunters.co/") 16 | print("\n") -------------------------------------------------------------------------------- /minigames/games/ninja.py: -------------------------------------------------------------------------------- 1 | #https://ninja.io/ 2 | 3 | import webbrowser 4 | 5 | print("opening ninja.io in your browser...") 6 | webbrowser.open("https://ninja.io/") 7 | print("\n") 8 | -------------------------------------------------------------------------------- /minigames/games/skribbl.py: -------------------------------------------------------------------------------- 1 | #https://skribbl.io/ 2 | 3 | 4 | import webbrowser 5 | 6 | 7 | print("\nopening skribbl.io in your browser...") 8 | webbrowser.open("https://skribbl.io/") 9 | print("\n") 10 | -------------------------------------------------------------------------------- /minigames/games/smashkarts.py: -------------------------------------------------------------------------------- 1 | #https://smashkarts.io/ 2 | 3 | import webbrowser 4 | 5 | print("About Smashkarts :") 6 | print("Smashkarts.io is a car game io") 7 | print("Some Standard Controls :") 8 | print("use WASD keys to move around the world.\n") 9 | print("use space to shoot.\n") 10 | 11 | 12 | print("opening Smashkarts.io in your browser...") 13 | webbrowser.open("https://smashkarts.io/") 14 | print("\n") 15 | -------------------------------------------------------------------------------- /minigames/games/venge.py: -------------------------------------------------------------------------------- 1 | #https://venge.io/ 2 | 3 | import webbrowser 4 | 5 | print("About Venge.io :") 6 | print("Venge.io is a multiplayer FPS game with capture-the-flag mechanics.\nSelect your character, pick a weapon, and jump into the fast-paced action.\nUse your sharp skills and reflexes to dominate the leaderboard.\nUnlock cards and use them tactically against your opponents.\n") 7 | 8 | print("\nSome Standard Controls :") 9 | print("Use the WASD keys to move around the world.") 10 | print("use mouse to look around,aim and shoot.") 11 | print("use space to jump.") 12 | print("use 1,2,3,4 to select weapons.") 13 | print("use H to Show emote.") 14 | 15 | print("\n\nopening Venge.io in your browser...") 16 | webbrowser.open("https://venge.io/") 17 | print("\n") 18 | 19 | -------------------------------------------------------------------------------- /minigames/minigamesmanager.py: -------------------------------------------------------------------------------- 1 | import time 2 | 3 | 4 | def playgame(): 5 | print('Which Game Would you like to play Today :\n') 6 | print(''' 7 | List of Available Games: 8 | \n1.Venge.io 9 | \n2.Smashkarts.io 10 | \n3.Skribbl.io 11 | \n4.Chess 12 | \n5.Drift Hunters 13 | \n6.Ninja.io 14 | 15 | OR type "quit" to exit gamemanager. 16 | or type "help" to get help on how to use gamemanager. 17 | 18 | ''') 19 | 20 | uinp=input("Enter the number in front of the game you'll like to play\n>>") 21 | 22 | if '1' in uinp or 'Venge' in uinp or 'venge' in uinp or 'Venge.io' in uinp or 'venge.io' in uinp: 23 | from games import venge 24 | 25 | elif '2' in uinp or 'Smashkarts' in uinp or 'smashkarts' in uinp or 'Smashkarts.io' in uinp or 'smashkarts.io' in uinp: 26 | from games import smashkarts 27 | 28 | elif '3' in uinp or 'Skribbl' in uinp or 'skribbl' in uinp or 'Skribbl.io' in uinp or 'skribbl.io' in uinp: 29 | from games import skribbl 30 | 31 | elif '4' in uinp or 'Chess' in uinp or 'chess' in uinp: 32 | from games import chess 33 | 34 | elif '5' in uinp or 'Drift' in uinp or 'drift' in uinp or 'Drift Hunters' in uinp or 'drift hunters' in uinp: 35 | from games import drifthunters 36 | 37 | elif '6' in uinp or 'ninja' in uinp or 'ninja.io' in uinp: 38 | from games import ninja 39 | 40 | elif 'help' in uinp or 'Help' in uinp or 'HELP' in uinp: 41 | print("its so easy already, just type the number in front of the game you want to play") 42 | print("your such an amazing person, you can't even type the number of the game you want to play") 43 | print("so just type the name of the game you want to play and it will work") 44 | 45 | elif uinp=="quit" or uinp=="Quit": 46 | quit() 47 | 48 | else: 49 | print('You need to choose a Number/Name from the list above, You NOOB! ') 50 | print('\n') 51 | return playgame() 52 | time.sleep(3) 53 | 54 | 55 | if __name__ == "__main__": 56 | playgame() -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | keyboard==0.13.5 2 | playsound==1.3.0 3 | pyjokes==0.6.0 4 | pyttsx3==2.90 5 | pywhatkit==5.1 6 | requests==2.28.1 7 | rich==11.0.0 8 | SpeechRecognition==3.8.1 9 | wikipedia==1.4.0 10 | winshell==0.6 11 | wolframalpha==5.0.0 12 | pyscreenshot==3.0 13 | gTTS==2.2.4 14 | win10toast==0.9 15 | -------------------------------------------------------------------------------- /scripts/FeatureExecution.py: -------------------------------------------------------------------------------- 1 | from speech import speak 2 | import datetime 3 | import wikipedia 4 | import webbrowser 5 | import time 6 | import random 7 | import subprocess 8 | import requests 9 | import wolframalpha 10 | import os 11 | import playsound 12 | import winshell 13 | import speech_recognition as sr 14 | import pywhatkit 15 | import keyboard 16 | from inputmode import mode_select 17 | from standardfunctions import * 18 | from dialogue import * 19 | from api_keys import * 20 | 21 | def takeCommand(): 22 | print("Listening....") 23 | r = sr.Recognizer() 24 | r.dynamic_energy_threshold=False 25 | r.energy_threshold=4000 26 | r.pause_threshold = 1 27 | with sr.Microphone() as source: 28 | r.adjust_for_ambient_noise(source) 29 | audio = r.listen(source) 30 | said="" 31 | try: 32 | print("Recognizing....") 33 | said = r.recognize_google(audio,language='en') 34 | print(f"You Said : {said}\n") 35 | except sr.UnknownValueError : 36 | print("could not understand audio \n~Trying Again~") 37 | return takeCommand() 38 | except sr.RequestError as e: 39 | print("Could not request results, check your internet connection; {0}".format(e)) 40 | return "None" 41 | return said.lower() 42 | 43 | def takecommand_text(): 44 | query=input(">> ") 45 | return query.lower() 46 | 47 | def take_input(variable): 48 | if variable==0: 49 | return takecommand_text() 50 | elif variable==1: 51 | return takeCommand() 52 | 53 | def wishMe(): 54 | hour=datetime.datetime.now().hour 55 | if hour>=0 and hour<12: 56 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"gm.mp3")) 57 | print("Hello,Good Morning") 58 | elif hour>=12 and hour<18: 59 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"ga.mp3")) 60 | print("Hello,Good Afternoon") 61 | else: 62 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"ge.mp3")) 63 | print("Hello,Good Evening") 64 | time.sleep(2) 65 | 66 | def chat(conversation_mode): #here conversation mode is referenced to either text or speech input 67 | '''with randomstuff.Client(api_key='YOUR-API-KEY-HERE') as client: #API KEY REQUIRED HERE 68 | while True: 69 | chat_message=take_input(conversation_mode) 70 | response = client.get_ai_response(chat_message,bot="Knick", master="Arsh") 71 | print(response.message) 72 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"notification.mp3")) 73 | if 'bye' in chat_message : 74 | break 75 | time.sleep(1)''' 76 | print("Chat Feature is Down till next Update ",conversation_mode) 77 | 78 | def note(text): 79 | '''date = datetime.datetime.now()''' 80 | r = random.randint(1,20000000) 81 | note_name=("knick-note"+ str(r)) 82 | with open(note_name, "w") as f: 83 | f.write(text) 84 | print("Note saved as : ",note_name) 85 | subprocess.Popen(["notepad.exe", note_name]) 86 | 87 | #here is the exceution functions i made it, so that the main code looks a bit clean XD 88 | def showmagic(): 89 | knick_input_mode= mode_select() 90 | while True: 91 | #playsound.playsound(os.path.join('soundeffects\sfx',"howcanihelpyounow.mp3")) 92 | #print("\nTell Me How Can I Help you Now ?") 93 | ask=any_random(asking) 94 | print("\n",ask) 95 | speak(ask+".") 96 | statement=take_input(knick_input_mode) 97 | 98 | if statement==None: 99 | print("No Input Detected!\n") 100 | continue 101 | 102 | elif "good bye" in statement or "ok bye" in statement or "stop" in statement or "bye" in statement or "quit" in statement: 103 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"shuttingdown.mp3")) 104 | print("\n") 105 | print(' Your Personal Assistant Knick is Shutting Down,Good bye. ') 106 | playsound._playsoundWin(os.path.join('soundeffects\sfx','powerdown.mp3')) 107 | print("~ The BOT went Offline ~") 108 | time.sleep(4) 109 | cleaner() 110 | quit() 111 | 112 | elif "pause" in statement: 113 | speak("Assistant Paused.") 114 | print("ok i am paused\nPress 'W' whenever You Want Me to Resume") 115 | print(" ") 116 | from console import assistant_pause,assistant_resumed 117 | print(assistant_pause) 118 | print(" ") 119 | while True : 120 | if keyboard.is_pressed('w'): 121 | speak("Assistant Resumed.") 122 | print(assistant_resumed) 123 | print(" ") 124 | break 125 | continue 126 | 127 | elif "hibernate" in statement or "sleep" in statement: #note this feature only works if there is a mic connected. 128 | speak("Hibernating.") 129 | print("please use the wakeword to wake me up, till then i'll be going undercover.") 130 | print("Available Wake Words :\n1.Assistant activate\n2.wake up assistant") 131 | time.sleep(2) 132 | subprocess.call('start scripts/Hotword/hotword_detection.pyw', shell=True) 133 | time.sleep(0.5) 134 | quit() #when this part of the code worked,beleive me... it was cool as Af. 135 | 136 | elif "no thanks"==statement: 137 | speak("ok, i will sleep for some time then.") 138 | print("ok, i will sleep for some time then.") 139 | print("\nuse the wakeword to awake me, till then i'll be going undercover.") 140 | time.sleep(2) 141 | subprocess.call('start scripts/Hotword/hotword_detection.pyw', shell=True) 142 | quit() 143 | 144 | elif "hi"==statement or "hello" in statement : 145 | hello_greating=any_random(hello) 146 | print(hello_greating,"\n(NOTE:if you wanna have chat with me. just use the 'Lets Chat' command)") 147 | speak(hello_greating) 148 | time.sleep(1) 149 | 150 | elif "open youtube and search for" in statement or "open youtube and search" in statement: 151 | query=statement.split('open youtube and search for') 152 | srch=query 153 | print("Searching for : ",srch," on youtube") 154 | print("opening youtube...") 155 | sss=(f"https://www.youtube.com/results?search_query="+ 156 | "+".join(srch)) 157 | pywhatkit.playonyt(sss) 158 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 159 | time.sleep(1) 160 | 161 | elif 'open youtube' in statement: 162 | print('Opening Youtube...') 163 | webbrowser.open_new_tab("https://www.youtube.com") 164 | time.sleep(3) 165 | print("youtube is open now.") 166 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 167 | time.sleep(5) 168 | 169 | elif 'open github' in statement: 170 | print('Opening GitHub...') 171 | webbrowser.open_new_tab("https://github.com/") 172 | print('GitHub is now Open.') 173 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 174 | time.sleep(5) 175 | 176 | elif 'open google' in statement: 177 | webbrowser.open_new_tab("https://www.google.com") 178 | print("Google chrome is open now.") 179 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 180 | time.sleep(5) 181 | 182 | elif "snipping tool" in statement: 183 | print("Opening Snipping Tool") 184 | os.system("start snippingtool") 185 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 186 | time.sleep(5) 187 | 188 | elif "screenshot" in statement: 189 | import random 190 | time.sleep(1.5) 191 | import pyscreenshot 192 | image = pyscreenshot.grab() 193 | r = random.randint(1,20000000) 194 | file_name=("knickscreenshot"+ str(r) +".png") 195 | image.save(file_name) 196 | print("Screenshot saved as : ",file_name) 197 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"done.wav")) 198 | time.sleep(2) 199 | 200 | elif "handwriting" in statement: 201 | speak("Enter the text you want to Convert ?") 202 | vars=input("Enter the Text which you want to convert into Your Handwriting. \n>>") 203 | pywhatkit.text_to_handwriting(string=vars,save_to="handwriting.png") 204 | print("Your Text to HandWriting Conversion is Done!\nTIP: To check your Result, Check for handwriting.png File") 205 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"done.wav")) 206 | time.sleep(3) 207 | 208 | elif "image conversion" in statement : 209 | ima=input("Enter the Path of Image :") 210 | pywhatkit.image_to_ascii_art(imgpath=ima,output_file="knick_asciiart.txt") 211 | print("i have Made Your ASCII art and also saved it.") 212 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"done.wav")) 213 | time.sleep(3) 214 | 215 | elif "edge" in statement: 216 | print("Opening Microsoft Edge") 217 | os.system("start msedge") 218 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 219 | time.sleep(5) 220 | 221 | elif 'open whatsapp' in statement or 'whatsapp' in statement: 222 | webbrowser.open_new_tab('https://web.whatsapp.com/') 223 | print('opening WhatsApp Web') 224 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 225 | time.sleep(6) 226 | 227 | elif 'open instagram' in statement or 'instagram' in statement: 228 | webbrowser.open_new_tab('https://www.instagram.com/') 229 | print('opening Instagram') 230 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 231 | time.sleep(6) 232 | 233 | elif 'open gmail' in statement: 234 | webbrowser.open_new_tab("gmail.com") 235 | print("Google Mail is open now.") 236 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 237 | time.sleep(5) 238 | 239 | elif 'open discord' in statement or 'discord' in statement: 240 | webbrowser.open_new_tab("https://discord.com/channels/@me") 241 | print("discord is open now.") 242 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 243 | time.sleep(5) 244 | 245 | elif 'open facebook' in statement: 246 | print('opening facebook...') 247 | webbrowser.open_new_tab("https://www.facebook.com/") 248 | print('facebook is open now.') 249 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 250 | time.sleep(5) 251 | 252 | elif "open stackoverflow" in statement: 253 | webbrowser.open_new_tab("https://stackoverflow.com/login") 254 | print("Here is stackoverflow") 255 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 256 | time.sleep(3) 257 | 258 | elif 'clear cache' in statement or 'clear system cache' in statement or 'boost system' in statement: 259 | speak("Clearing system Cache....") 260 | speak("please do not touch anything for a while, the automated process is starting.") 261 | keyboard.press_and_release('win+R') 262 | time.sleep(1) 263 | keyboard.write("%temp%",delay=0.1) 264 | time.sleep(0.7) 265 | keyboard.press_and_release("enter") 266 | print("clearing cache in process....") 267 | time.sleep(2.6) 268 | keyboard.press_and_release("ctrl+a") 269 | time.sleep(0.5) 270 | keyboard.press_and_release("del+shift") 271 | time.sleep(0.7) 272 | keyboard.press_and_release("enter") 273 | print ('Starting the removal of the file !\n') 274 | print("If you see any Error, just Delete the Temp Folder manually.") 275 | time.sleep(3) 276 | 277 | elif "open my inbox" in statement: 278 | webbrowser.open_new_tab("https://mail.google.com/mail/u/0/#inbox") 279 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 280 | time.sleep(3) 281 | 282 | elif "open my sent mails" in statement or "open my sent mail" in statement: 283 | webbrowser.open_new_tab("https://mail.google.com/mail/u/0/#sent") 284 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 285 | time.sleep(3) 286 | 287 | elif 'open terminal' in statement or 'cmd' in statement: 288 | os.startfile ("cmd") 289 | print("Command Prompt is Open Now") 290 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"taskcompleted.mp3")) 291 | time.sleep(3) 292 | 293 | elif 'log off' in statement or 'sign out' in statement: 294 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"logoff.mp3")) 295 | subprocess.call(["shutdown", "/l"]) 296 | 297 | elif "shutdown" in statement or "shut down" in statement: 298 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"logoff.mp3")) 299 | time.sleep(3) 300 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"shutdown.mp3")) 301 | time.sleep(3) 302 | os.system('shutdown/s') 303 | 304 | elif "restart my pc" in statement: 305 | speak("okay, restarting your pc") 306 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"logoff.mp3")) 307 | os.system('shutdown/r') 308 | 309 | elif 'date today' in statement or 'today date' in statement: 310 | from datetoday import today_date 311 | print(today_date()) 312 | speak(today_date()) 313 | time.sleep(3) 314 | 315 | elif "empty recycle bin" in statement: 316 | winshell.recycle_bin().empty( 317 | confirm=True, show_progress=False, sound=True 318 | ) 319 | speak("you should press enter if any dialog box appears.") 320 | time.sleep(1.3) 321 | speak("Recycle Bin Emptied") 322 | 323 | elif "note" in statement or "remember this" in statement: 324 | print("What would you like me to write down?") 325 | speak("What would you like me to write down?") 326 | note_text = take_input(knick_input_mode) 327 | note(note_text) 328 | print("I have made a note of that.\n") 329 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"done.wav")) 330 | 331 | elif "weather" in statement: 332 | #API KEY REQUIRED HERE 333 | if weather_api_key=="YOUR API KEY HERE": #{this part can be comment out later,and indexing below shall be fixed 334 | print("You need to get an API key first!\n") 335 | break 336 | else: #} 337 | base_url="https://api.openweathermap.org/data/2.5/weather?" 338 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"cityname.mp3")) 339 | print("\nwhats the city?") 340 | city_name= take_input(knick_input_mode) 341 | complete_url=base_url+"appid="+weather_api_key+"&q="+city_name #weather_api_key is the api key here 342 | response = requests.get(complete_url) 343 | x=response.json() 344 | if x["cod"]!="404": 345 | y=x["main"] 346 | current_temperature = y["temp"] 347 | current_humidiy = y["humidity"] 348 | z = x["weather"] 349 | weather_description = z[0]["description"] 350 | 351 | print(" Temperature in kelvin unit = " + 352 | str(current_temperature) + 353 | "\nhumidity (in percentage) = " + 354 | str(current_humidiy) + 355 | "\ndescription = " + 356 | str(weather_description)) 357 | speak("Temperature in kelvin unit is " + 358 | str(current_temperature) + 359 | "\nhumidity in percentage is " + 360 | str(current_humidiy) + 361 | "\ndescription " + 362 | str(weather_description)) 363 | 364 | else: 365 | speak(" City Not Found. ") 366 | print(" City Not Found ") 367 | 368 | elif 'time' in statement: 369 | strTime=datetime.datetime.now().strftime("%H:%M:%S") 370 | speak(f"the time is {strTime}") 371 | 372 | elif 'news' in statement: 373 | news = webbrowser.open_new_tab("https://timesofindia.indiatimes.com/home/headlines") 374 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"news.mp3")) 375 | time.sleep(6) 376 | 377 | elif "search on google" in statement: 378 | statement = statement.split("search on google") 379 | search = statement 380 | webbrowser.open("https://www.google.com/search?q=" + "+".join(search)) 381 | speak("Searching " + str(search) + " on google") 382 | playsound._playsoundWin(os.path.join('soundeffects\sfx','taskcompleted.mp3')) 383 | time.sleep(3) 384 | 385 | elif 'ask' in statement: 386 | if wolfram_api_key=="YOUR API KEY HERE": 387 | print("You need to get an API key first!") 388 | break 389 | else: 390 | speak("I can answer to computational and geographical questions and what question do you want to ask now") 391 | query=take_input(knick_input_mode) 392 | client = wolframalpha.Client(wolfram_api_key) #API KEY REQUIRED HERE 393 | res = client.query(query) 394 | answer = next(res.results).text 395 | print(answer) 396 | 397 | elif 'wikipedia' in statement: 398 | speak("Searching Wikipedia about it...") 399 | statement =statement.replace("search on wikipedia about", "") 400 | try: 401 | results = wikipedia.summary(statement, sentences=3) 402 | speak("According to Wikipedia") 403 | print(results) 404 | speak(results) 405 | except: 406 | speak("Unknown Error Occured, say your question again.") 407 | continue 408 | 409 | elif 'who is' in statement: 410 | try: 411 | speak("getting information from Wikipedia..") 412 | statement =statement.replace("who is","") 413 | results = wikipedia.summary(statement, sentences=3) 414 | speak("According to Wikipedia") 415 | print(results) 416 | speak(results) 417 | except: 418 | speak("Enable to Fetch Data,try again.") 419 | continue 420 | 421 | elif "where is" in statement: 422 | ind = statement.split().index("is") 423 | location = statement[ind + 8:] 424 | url = "https://www.google.com/maps/place/" + "".join(location) 425 | speak("This is where i found, " + str(location)) 426 | webbrowser.open(url) 427 | playsound._playsoundWin(os.path.join('soundeffects\sfx','taskcompleted.mp3')) 428 | time.sleep(3) 429 | 430 | elif 'yt studio' in statement or 'open yt studio' in statement: 431 | webbrowser.open_new_tab("https://studio.youtube.com/") 432 | speak("opening youtube creator studio") 433 | playsound._playsoundWin(os.path.join('soundeffects\sfx','taskcompleted.mp3')) 434 | time.sleep(5) 435 | 436 | elif 'live studio' in statement or 'livestream dashboard' in statement or 'live control room' in statement: 437 | webbrowser.open_new_tab('https://studio.youtube.com/channel/UCWe1CSEpVq_u6WDk3F7E2Mg/livestreaming/manage') 438 | speak("opening youtube livestream dashboard") 439 | playsound._playsoundWin(os.path.join('soundeffects\sfx','taskcompleted.mp3')) 440 | time.sleep(5) 441 | 442 | elif 'keyword' in statement or 'google trends' in statement or 'keyword research' in statement: 443 | speak("do you want me to open google trends for keyword research.") 444 | print('type yes or no for Opening Google Trends') 445 | gtask=input('>> ') 446 | if (gtask=='yes'): 447 | webbrowser.open_new_tab('https://trends.google.com/') 448 | elif(gtask=='no'): 449 | speak("ok, i will not open Google Trends.") 450 | print("OPENING GOOGLE TRENDS : Cancelled By User") 451 | playsound._playsoundWin(os.path.join('soundeffects\sfx','taskcompleted.mp3')) 452 | time.sleep(5) 453 | 454 | elif 'viewbot' in statement or 'livebot' in statement or 'view bot' in statement: 455 | playsound._playsoundWin(os.path.join('soundeffects\sfx','startingviewbot.mp3')) 456 | print("if you get any error in the viewbot or it doesn't work try updating the Assistant or \n vist the official website of knick assistant & check the ViewBot Page.") 457 | subprocess.call('viewbot\livebot.exe') 458 | time.sleep(3) 459 | 460 | elif 'how were you born' in statement or 'why were you born' in statement: 461 | print(''' 462 | I was born on june 2021 by A Boy Who Had an Ambition To Change This World with the 463 | Help Of Artificial Intelligence, Although i am still just a small step towards this 464 | new ERA of A.I . But I am still Happy to be Born and serve you right now''') 465 | playsound._playsoundWin(os.path.join('soundeffects\sfx','born.mp3')) 466 | time.sleep(3) 467 | 468 | elif 'who are you' in statement or 'what can you do' in statement: 469 | print('I am Knick your Persoanl AI assistant. I am programmed for managing normal tasks in your Life') 470 | speak("I am Knick your Persoanl AI assistant. I am programmed for managing normal tasks in your Life") 471 | time.sleep(3) 472 | 473 | elif 'your name' in statement or 'what is your name' in statement : 474 | speak("my name is knick, how could you forget me :-(") 475 | print('my name is knick your A.I assistant') 476 | print(" (ㆆ_ㆆ) "*3) 477 | time.sleep(3) 478 | 479 | elif 'what is your slogan' in statement or 'what is your motive' in statement: 480 | playsound._playsoundWin(os.path.join('soundeffects\sfx','slogan.mp3')) 481 | print('Leading Towards A Efficient Life.') 482 | time.sleep(3) 483 | 484 | elif "who made you" in statement or "who created you" in statement or "who discovered you" in statement: 485 | speak("I was built by my great all mighty master, Arsh") 486 | print("I was built by Arsh") 487 | time.sleep(2) 488 | 489 | elif 'update knick' in statement or 'knick website' in statement: 490 | speak("opening The Official Website For Knick Assistant.") 491 | webbrowser.open_new_tab("https://knickassistant.wordpress.com/") 492 | speak("please manually check for any new Available verson.") 493 | time.sleep(4) 494 | 495 | elif 'tell commands' in statement or 'your commands' in statement or 'command' in statement: 496 | speak("Telling you the list of my commands :") 497 | speak("below is the list of all commands respectively.") 498 | print('\n\nbelow is the list of all commands respectively') 499 | from console import command_list 500 | print(command_list) 501 | time.sleep(3) 502 | 503 | elif 'chat' in statement: 504 | #print('\nChat Feature is Still in ALPHA vesion,\nso please have patience while using it.') 505 | chat(knick_input_mode) 506 | from console import bug 507 | print(bug) 508 | time.sleep(3) 509 | 510 | elif 'play game' in statement: 511 | speak('opening mini games manager') 512 | from minigames import minigamesmanager 513 | minigamesmanager.playgame() 514 | time.sleep(3) 515 | 516 | elif 'insult me' in statement: 517 | try: 518 | evil=requests.get(url='https://evilinsult.com/generate_insult.php?lang=en&type=json') 519 | data=evil.json() 520 | insult=data['insult'] 521 | print(insult) 522 | speak(insult) 523 | time.sleep(2) 524 | except: 525 | speak("the insult generation server is down,you may try again later.") 526 | 527 | elif 'i want to dictate' in statement: 528 | speak("okay opening dictation option.") 529 | time.sleep(0.5) 530 | keyboard.press_and_release('win+H') 531 | time.sleep(0.5) 532 | playsound._playsoundWin(os.path.join('soundeffects\sfx','done.wav')) 533 | continue 534 | 535 | elif 'say' in statement or 'pronounce' in statement: 536 | speak("okay, type the text.") 537 | what_to_say=input('What you Want Me To Say : ') 538 | print('user entered :',what_to_say) 539 | speak(what_to_say) 540 | time.sleep(2) 541 | 542 | elif "change input mode" in statement: 543 | speak("ok, select the input mode again.") 544 | showmagic() 545 | 546 | elif "thanks" in statement: 547 | reply_to_thanks=any_random(np) 548 | print(reply_to_thanks) 549 | speak(reply_to_thanks) 550 | 551 | elif "support assistance" in statement: 552 | speak("you can join the official discord server of knick, if you have any problem while using the assistant.") 553 | query=input("do you want to join the Discord Server for Assistance? (y/n)\n>> ") 554 | if query=="y": 555 | webbrowser.open_new_tab("https://discord.gg/2X4WThB64b") 556 | continue 557 | elif query=="n": 558 | print("ok : action cancelled by user") 559 | continue 560 | else: 561 | print("you need to select from 'y' or 'n' only, IDOT!") 562 | continue 563 | 564 | else: 565 | print('Unable to Read Your Command\nError: Unknown Command') 566 | playsound._playsoundWin(os.path.join('soundeffects\sfx','systemdown.mp3')) 567 | playsound._playsoundWin(os.path.join('soundeffects\sfx','responses.wav')) 568 | time.sleep(2) 569 | 570 | 571 | -------------------------------------------------------------------------------- /scripts/Hotword/assistant_direct.py: -------------------------------------------------------------------------------- 1 | import sys 2 | sys.path.append('scripts/') 3 | 4 | 5 | from console import intro_header 6 | import time 7 | #assistant directly works without giving introduction or any other shit. 8 | def start_from_hibernation(): 9 | print(intro_header) 10 | from standardfunctions import wishMe 11 | wishMe() 12 | time.sleep(1) 13 | from FeatureExecution import showmagic 14 | showmagic() 15 | 16 | if __name__ == '__main__': 17 | start_from_hibernation() 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /scripts/Hotword/awake.py: -------------------------------------------------------------------------------- 1 | import sys 2 | sys.path.append('scripts/') 3 | 4 | 5 | from console import intro_header 6 | import time 7 | #assistant directly works without giving introduction or any other shit. 8 | def start_from_hibernation(): 9 | print(intro_header) 10 | from standardfunctions import wishMe 11 | wishMe() 12 | time.sleep(1) 13 | from FeatureExecution import showmagic 14 | showmagic() 15 | 16 | if __name__ == '__main__': 17 | start_from_hibernation() 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /scripts/Hotword/hotword_detection.pyw: -------------------------------------------------------------------------------- 1 | #this file uses a .pyw extension to run in the background 2 | 3 | import os 4 | import speech_recognition as sr 5 | 6 | def background_listening(): 7 | print("Listening in background....") 8 | r = sr.Recognizer() 9 | r.dynamic_energy_threshold=False 10 | r.energy_threshold=4000 11 | r.pause_threshold = 0.5 12 | with sr.Microphone() as source: 13 | r.adjust_for_ambient_noise(source) 14 | audio = r.listen(source) 15 | said="" 16 | try: 17 | print("Recognizing in background....") 18 | said = r.recognize_google(audio,language='en') 19 | print(f"You Said : {said}\n") 20 | except sr.UnknownValueError : 21 | print("\n~Trying Again~") 22 | return background_listening() 23 | except sr.RequestError as e: 24 | print("Could not request results, check your internet connection; {0}".format(e)) 25 | return "None" 26 | return said.lower() 27 | 28 | def desktop_notification(text_for_notification,duration_of_notification): 29 | # import win10toast 30 | from win10toast import ToastNotifier 31 | # create an object to ToastNotifier class 32 | n = ToastNotifier() 33 | n.show_toast("KnickAI",text_for_notification, duration = duration_of_notification) 34 | 35 | hotword="assistant activate" 36 | hotword2="wake up assistant" 37 | hotword3="assistant activate" 38 | #more hotwords can be added here by the user if needed. 39 | #but please learn to pronounce them properly first, or else you'll get messed up. 40 | 41 | def work_in_background(): 42 | desktop_notification("Assistant running in background",5) 43 | while True: 44 | Listening=background_listening() 45 | if hotword in Listening or hotword2 in Listening or hotword3 in Listening: 46 | desktop_notification("Assistant is now running in foreground",4) 47 | os.system("python scripts/Hotword/awake.py") 48 | break 49 | else: 50 | continue 51 | 52 | 53 | if __name__ == '__main__': 54 | work_in_background() 55 | 56 | 57 | #Note : if you run this file individually, then you may receive an error because of the directory structure. 58 | # To fix this, run this file from the main directory of the project. i.e run knickassistant.py 59 | # or 60 | # change the line 47 i.e ("python scripts/Hotword/awake.py") to ("python Hotword/awake.py") -------------------------------------------------------------------------------- /scripts/api_keys.py: -------------------------------------------------------------------------------- 1 | weather_api_key="YOUR-API-KEY-HERE" 2 | wolfram_api_key="YOUR-API-KEY-HERE" 3 | #chatbot_api_key="YOUR-API-KEY-HERE" -------------------------------------------------------------------------------- /scripts/console.py: -------------------------------------------------------------------------------- 1 | 2 | #__version__= pyfiglet.print_figlet("vBETA",font="big") 3 | 4 | intro_header= ''' 5 | ██╗░░██╗███╗░░██╗██╗░█████╗░██╗░░██╗  ░█████╗░░██████╗░██████╗██╗░██████╗████████╗░█████╗░███╗░░██╗████████╗ 6 | ██║░██╔╝████╗░██║██║██╔══██╗██║░██╔╝  ██╔══██╗██╔════╝██╔════╝██║██╔════╝╚══██╔══╝██╔══██╗████╗░██║╚══██╔══╝ 7 | █████═╝░██╔██╗██║██║██║░░╚═╝█████═╝░  ███████║╚█████╗░╚█████╗░██║╚█████╗░░░░██║░░░███████║██╔██╗██║░░░██║░░░ 8 | ██╔═██╗░██║╚████║██║██║░░██╗██╔═██╗░  ██╔══██║░╚═══██╗░╚═══██╗██║░╚═══██╗░░░██║░░░██╔══██║██║╚████║░░░██║░░░ 9 | ██║░╚██╗██║░╚███║██║╚█████╔╝██║░╚██╗  ██║░░██║██████╔╝██████╔╝██║██████╔╝░░░██║░░░██║░░██║██║░╚███║░░░██║░░░ 10 | ╚═╝░░╚═╝╚═╝░░╚══╝╚═╝░╚════╝░╚═╝░░╚═╝  ╚═╝░░╚═╝╚═════╝░╚═════╝░╚═╝╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░╚══╝░░░╚═╝░░░''' 11 | 12 | assistant_pause=''' 13 | ▄▀█ █▀ █▀ █ █▀ ▀█▀ ▄▀█ █▄░█ ▀█▀   █▀█ ▄▀█ █░█ █▀ █▀▀ █▀▄ 14 | █▀█ ▄█ ▄█ █ ▄█ ░█░ █▀█ █░▀█ ░█░   █▀▀ █▀█ █▄█ ▄█ ██▄ █▄▀''' 15 | 16 | assistant_resumed=''' 17 | ▄▀█ █▀ █▀ █ █▀ ▀█▀ ▄▀█ █▄░█ ▀█▀   █▀█ █▀▀ █▀ █░█ █▀▄▀█ █▀▀ █▀▄ 18 | █▀█ ▄█ ▄█ █ ▄█ ░█░ █▀█ █░▀█ ░█░   █▀▄ ██▄ ▄█ █▄█ █░▀░█ ██▄ █▄▀''' 19 | 20 | command_list=(''' 21 | Utility commands: 22 | ★ open (whatsapp,google,Edge,youtube,gmail,github,disocrd,instagram,facebook,stackoverflow) 23 | *To be Added: ★ close (whatsapp,google,Edge,youtube,gmail,github,disocrd,instagram,facebook,stackoverflow) 24 | ★ open youtube and search for 25 | ★ open my inbox 26 | ★ open sent mails 27 | ★ open terminal 28 | ★ open Snipping Tool 29 | ★ Take ScreenShot 30 | ★ text to handwriting 31 | ★ image to ascii 32 | ★ clear Cache 33 | ★ empty recycle bin 34 | ★ Open CMD/Terminal 35 | ★ log off/sign out 36 | ★ restart my pc 37 | ★ Shutdown 38 | ★ date today 39 | ★ note/remember this 40 | 41 | 42 | Explore Commands: 43 | 🟂 tell weather 44 | 🟂 tell time 45 | 🟂 tell date 46 | 🟂 tell news 47 | 🟂 who is (Person) 48 | 🟂 where is (location) 49 | 🟂 search on google (for anything on your browser) 50 | 🟂 ask (computational/geographical questions) 51 | 🟂 wikipedia (search all the wikipedia for your Query) 52 | 🟂 where is (for finding locations on google Maps) 53 | 54 | 55 | Content Creator Commands: 56 | ‣ yt studio (opens youtube studio) 57 | ‣ live studio (opens youtube live dashboard) 58 | ‣ keywords (opne google trends) 59 | ‣ viewbot (opens livestream viewbot) 60 | ‣ Suggest Some Good Youtube Practices 61 | 62 | 63 | Chattings Commands: 64 | ☎ Lets Chat 65 | ☎ Lets Play Games (opens the game Manager) 66 | ☎ Tell me a joke 67 | ☎ Insult Me 68 | ☎ Say/pronounce (make the bot say anything by using this command) 69 | 70 | 71 | About Commands: 72 | ❆ how were you born/why were you born 73 | ❆ who are you / what can you do 74 | ❆ what is your name 75 | ❆ who created you 76 | ❆ what is your slogan 77 | ❆ knick website 78 | 79 | Bot Commands: 80 | ~ change input Mode 81 | ~ Bye (to Exit the assistant) 82 | ~ Pause (Pauses the Bot) 83 | ~ sleep/hibernate (bot works in background) 84 | ~ support assistance (support service) 85 | 86 | ''') 87 | 88 | 89 | 90 | heart_ascii=(''' 91 | ____*##########* 92 | __*############## 93 | __################ 94 | _##################_________*####* 95 | __##################_____*########## 96 | __##################___*############# 97 | ___#################*_###############* 98 | ____#################################* 99 | ______############################### 100 | _______############################# 101 | ________=########################## 102 | __________######################## 103 | ___________*##################### 104 | ____________*################## 105 | _____________*############### 106 | _______________############# 107 | ________________########## 108 | ________________=#######* 109 | _________________###### 110 | __________________#### 111 | __________________### 112 | ___________________# 113 | ''') #i really don't remember if i used this anywhere? (LE ME- Thinking WHY the hell I even added it?) 114 | 115 | smile_face= "(❛ʖ͡❛)" 116 | crywithsmile_face="( ͡ಥʖ͡ಥ)" 117 | people_faces="(⊙.⊙(☉̃ₒ☉)⊙.⊙)" 118 | wtf_face="(ㆆ_ㆆ)" 119 | smile2_face="(̶◉͛‿◉̶)" 120 | temperature_scale_f="℉" 121 | temperature_scale_c="℃" 122 | 123 | bug=(''' 124 | .--. .--. 125 | _ ` \ / ` _ 126 | `\.===. \.^./ .===./` 127 | \/`"`\/ 128 | , | BUG | , 129 | / `\|;-.-'|/` . 130 | / |::\ | . 131 | .-' ,-'`|:::; |`'-, '-. 132 | | |::::\| | 133 | | |::::;| | 134 | | \::::// | 135 | | `.://' | 136 | .' `. 137 | _,' `,_''') #now this is some pro - programmer shit XD 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /scripts/datetoday.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | import calendar 3 | 4 | def today_date(): 5 | now = datetime.datetime.now() 6 | date_now = datetime.datetime.today() 7 | week_now = calendar.day_name[date_now.weekday()] 8 | month_now = now.month 9 | day_now = now.day 10 | months = [ 11 | "January", 12 | "February", 13 | "March", 14 | "April", 15 | "May", 16 | "June", 17 | "July", 18 | "August", 19 | "September", 20 | "October", 21 | "November", 22 | "December", 23 | ] 24 | 25 | ordinals = [ 26 | "1st", 27 | "2nd", 28 | "3rd", 29 | "4th", 30 | "5th", 31 | "6th", 32 | "7th", 33 | "8th", 34 | "9th", 35 | "10th", 36 | "11th", 37 | "12th", 38 | "13th", 39 | "14th", 40 | "15th", 41 | "16th", 42 | "17th", 43 | "18th", 44 | "19th", 45 | "20th", 46 | "21st", 47 | "22nd", 48 | "23rd", 49 | "24th", 50 | "25th", 51 | "26th", 52 | "27th", 53 | "28th", 54 | "29th", 55 | "30th", 56 | "31st", 57 | ] 58 | return ("Today is " + week_now + ", " + months[month_now - 1] + " the " + ordinals[day_now - 1] + ".") -------------------------------------------------------------------------------- /scripts/dialogue.py: -------------------------------------------------------------------------------- 1 | hello=["Hello","Hi","Hey","Howdy","Nice to see you","What's up?","Hiya","Whazzup","Yo","Sup"] 2 | 3 | np=["no problem","no worries","no big deal","always there to help","no probs","all right","no bother"] 4 | 5 | asking=["Tell Me How Can I Help you Now ?","How may i help you ?","what can i do to help you?","need any help ?","is there anything i can do for you ?"] 6 | 7 | 8 | 9 | #https://www.powerthesaurus.org/ can be used to find more synonyms of a particular dialogue -------------------------------------------------------------------------------- /scripts/inputmode.py: -------------------------------------------------------------------------------- 1 | import time 2 | import keyboard 3 | from speech import speak 4 | import speech_recognition as sr 5 | from rich import print 6 | 7 | 8 | def mode_select(): 9 | speak("please select an input Mode.") 10 | print("Please Select in wich input Mode you want to Use the Assistant : ") 11 | print("1.Press 't' for Text Input Mode\n2.Press 's' for Speech Input Mode ") 12 | 13 | while True : 14 | if keyboard.is_pressed('t'): 15 | print('You have successfully Selected : Text Input Mode') 16 | speak("text input Mode Selected.") 17 | mode_var= 0 18 | time.sleep(0.6) 19 | break 20 | elif keyboard.is_pressed('s'): 21 | print('You have successfully Selected : Speech Input Mode') 22 | speak("speech input Mode Selected.") 23 | mode_var= 1 24 | time.sleep(0.6) 25 | break 26 | return mode_var 27 | 28 | #sample how it will be used for selecting modes : 29 | ''' 30 | a=mode_select() 31 | if a==0: 32 | #takecommandti() 33 | print("things related to text input happen in main script :)") 34 | elif a==1: 35 | #takecommandsi() 36 | print("things related to speech_input happen in main script :)") 37 | ''' 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /scripts/knickassistant.py: -------------------------------------------------------------------------------- 1 | from startingengine import enginestart 2 | from standardfunctions import wishMe 3 | from standardfunctions import assistant_introduction 4 | from FeatureExecution import showmagic 5 | 6 | 7 | if __name__ == '__main__': 8 | enginestart() 9 | assistant_introduction() 10 | wishMe() 11 | showmagic() 12 | 13 | 14 | import time 15 | time.sleep(3) 16 | 17 | -------------------------------------------------------------------------------- /scripts/speech.py: -------------------------------------------------------------------------------- 1 | from gtts import gTTS 2 | def speak(text): #https://pypi.org/project/gtts/ 3 | tts = gTTS(text=text, lang='en') 4 | tts.save("speech.mp3") 5 | import os 6 | import playsound 7 | playsound.playsound("speech.mp3", True) 8 | os.remove("speech.mp3") 9 | 10 | 11 | ''' 12 | import pyttsx3 #https://pypi.org/project/pyttsx3/ 13 | def speak(text): 14 | engine = pyttsx3.init() 15 | engine.say(text) 16 | engine.runAndWait() 17 | ''' 18 | 19 | #pyttsx3 was showing an error, so I switched to gTTS 20 | #but still i have not found any better alternative than pyttsx3 and gTTS 21 | #so i will keep them both for now, You decide which one you want to use. -------------------------------------------------------------------------------- /scripts/standardfunctions.py: -------------------------------------------------------------------------------- 1 | import time 2 | import subprocess 3 | import os 4 | import playsound 5 | import speech_recognition as sr 6 | from console import intro_header 7 | 8 | def assistant_introduction(): 9 | print(intro_header) 10 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"intro.wav")) 11 | time.sleep(2) 12 | 13 | def takeCommand(): 14 | print("Listening.....") 15 | r = sr.Recognizer() 16 | r.dynamic_energy_threshold=False 17 | r.energy_threshold=4000 18 | r.pause_threshold = 1 19 | with sr.Microphone() as source: 20 | r.adjust_for_ambient_noise(source) 21 | audio = r.listen(source) 22 | said="" 23 | try: 24 | print("Recognizing.....") 25 | said = r.recognize_google(audio,language='en-in') 26 | print(f"You Said : {said}\n") 27 | except sr.UnknownValueError : 28 | print("could not understand audio \n ~Trying Again~") 29 | return takeCommand() 30 | except sr.RequestError as e: 31 | print("Could not request results, check your internet connection; {0}".format(e)) 32 | return "None" 33 | 34 | return said.lower() 35 | 36 | def wishMe(): 37 | from datetoday import datetime 38 | hour=datetime.datetime.now().hour 39 | if hour>=0 and hour<12: 40 | print("\n") 41 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"gm.mp3")) 42 | print("Hello,Good Morning") 43 | elif hour>=12 and hour<18: 44 | print("\n") 45 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"ga.mp3")) 46 | print("Hello,Good Afternoon") 47 | else: 48 | print("\n") 49 | playsound._playsoundWin(os.path.join('soundeffects\sfx',"ge.mp3")) 50 | print("Hello,Good Evening") 51 | 52 | def note(text): 53 | from datetoday import datetime 54 | date = datetime.datetime.now() 55 | file_name = str(date).replace(":", "-") + "-note.txt" 56 | with open(file_name, "w") as f: 57 | f.write(text) 58 | subprocess.Popen(["notepad.exe", file_name]) 59 | 60 | def any_random(var): 61 | import random 62 | choice=var[random.randint(0,len(var)-1)] 63 | return choice 64 | ''' 65 | USAGE for any_random(var) : 66 | hi=["Hello","Hi","Hey","Howdy","Hola","Bonjour"] 67 | print(any_random(hi)) 68 | ''' 69 | def desktop_notification(text_for_notification,duration_of_notification): 70 | # import win10toast 71 | from win10toast import ToastNotifier 72 | # create an object to ToastNotifier class 73 | n = ToastNotifier() 74 | n.show_toast("KnickAI",text_for_notification, duration = duration_of_notification) 75 | 76 | def cleaner(): 77 | if os.path.exists("pywhatkit_dbs.txt"): 78 | os.remove("pywhatkit_dbs.txt") #i don't know why this comes but yes, i'll remove it for sure xD 79 | #this function can be used to remove more unwanted folders too. -------------------------------------------------------------------------------- /scripts/startingengine.py: -------------------------------------------------------------------------------- 1 | import time 2 | import playsound 3 | import os 4 | from rich.progress import Progress 5 | from speech import speak 6 | from api_keys import * 7 | from rich import print 8 | 9 | #actually this has no use and is just a showpiece for now. 10 | # + it probably wastes time on startup too. xD 11 | 12 | 13 | def check_for_api_keys(): #if you wa to run without api keys, just comment this function call below. 14 | if weather_api_key == "YOUR-API-KEY-HERE" or wolfram_api_key == "YOUR-API-KEY-HERE": 15 | speak("Found Missing A P I keys.") 16 | print("\n\n[red]You have not yet set your API keys. Please add them to the api_keys.py file First.") 17 | time.sleep(3) 18 | else: 19 | pass 20 | 21 | def enginestart(): 22 | playsound._playsoundWin('soundeffects\sfx\startingengine.mp3') 23 | time.sleep(0.5) 24 | with Progress() as progress: 25 | task1 = progress.add_task("[red]Starting Engine...", total=200) 26 | task2 = progress.add_task("[green]Initialising Modules...", total=300) 27 | task3 = progress.add_task("[cyan]Importing all Prefrences...", total=100) 28 | while not progress.finished: 29 | progress.update(task1, advance=0.9) 30 | progress.update(task2, advance=0.9) 31 | progress.update(task3, advance=0.9) 32 | time.sleep(0.02) 33 | check_for_api_keys() 34 | speak("engine successfully started.") 35 | time.sleep(0.6) 36 | os.system('cls' if os.name == 'nt' else 'clear') 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /scripts/trends.py: -------------------------------------------------------------------------------- 1 | 2 | #NOT YET WORKING PROPERLY 3 | #NOT INTEGRATED WITH THE ASSISTANT YET 4 | 5 | from pytrends.request import TrendReq 6 | 7 | 8 | 9 | # Only need to run this once, the rest of requests will use the same session. 10 | pytrend = TrendReq() 11 | 12 | def trending_searches(): 13 | # Get Google Hot Trends data 14 | trending_searches = pytrend.trending_searches() 15 | print(trending_searches.head()) 16 | 17 | def todays_trends(): 18 | # Get Google Today's Trend data 19 | today_searches = pytrend.today_searches() 20 | print(today_searches.head()) 21 | 22 | def top_charts(): 23 | # Get Google Top Charts 24 | top_charts = pytrend.top_charts(2018, hl='en-US', tz=300, geo='GLOBAL') 25 | print(top_charts.head()) 26 | 27 | def keyword_suggestions(): 28 | # Get Google Keyword Suggestions 29 | kw=input("please enter the keyword you want to search:") 30 | suggestions_dict = pytrend.suggestions(keyword=kw) 31 | if suggestions_dict==[]: 32 | print("No suggestions found for the keyword: " + kw) 33 | else: 34 | print(suggestions_dict) 35 | 36 | def console_trends(): 37 | print("Available Google Trends Research Options :\n1. Trending Searches\n2. Today's Trends\n3. Top Charts\n4. Keyword Suggestions\n\n type Exit to leave the trends Research console") 38 | while True: 39 | choice = input("\n\nPlease enter your choice: ") 40 | if choice == "1" or choice == "Trending Searches": trending_searches() 41 | elif choice == "2" or choice == "Today's Trends": todays_trends() 42 | elif choice == "3" or choice == "Top Charts": 43 | top_charts() 44 | elif choice == "4" or choice == "Keyword Suggestions": keyword_suggestions() 45 | elif choice == "Exit" or choice == "exit" or choice == "quit": break 46 | else: 47 | print("\n\nInvalid choice, please try again, Dumbass!") 48 | continue 49 | 50 | if __name__ == '__main__': 51 | console_trends() -------------------------------------------------------------------------------- /soundeffects/sfx/born.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/born.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/cityname.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/cityname.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/done.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/done.wav -------------------------------------------------------------------------------- /soundeffects/sfx/error.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/error.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/ga.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/ga.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/ge.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/ge.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/gm.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/gm.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/howcanihelpyounow.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/howcanihelpyounow.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/intro.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/intro.wav -------------------------------------------------------------------------------- /soundeffects/sfx/introduction.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/introduction.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/logoff.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/logoff.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/news.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/news.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/notification.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/notification.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/powerdown.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/powerdown.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/reply_to_hello.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/reply_to_hello.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/replytohello.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/replytohello.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/responses.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/responses.wav -------------------------------------------------------------------------------- /soundeffects/sfx/shutdown.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/shutdown.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/shuttingdown.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/shuttingdown.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/slogan.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/slogan.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/startingengine.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/startingengine.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/startingviewbot.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/startingviewbot.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/systemdown.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/systemdown.mp3 -------------------------------------------------------------------------------- /soundeffects/sfx/taskcompleted.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/soundeffects/sfx/taskcompleted.mp3 -------------------------------------------------------------------------------- /viewbot/README.md: -------------------------------------------------------------------------------- 1 | # Viewbot 2 | ### taken from github.com/Airkek/Youtube-Viewers 😆 3 | 4 | this Feature was added in this as **viewbot is something cool, isnt it?😅** 5 | plus the viewbot i made on python sucks, thats the reason i took it from Airkek 6 | 7 | 8 | 9 | 10 | * i added some new PROXY URL's in the [proxy_url.txt](https://github.com/iamDyeus/KnickAI/blob/main/viewbot/proxy_url.txt) file 11 | * you can add or remove proxy URL's in it as you wish 12 | * i recommend you to use premium proxys 👍 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /viewbot/livebot.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamDyeus/KnickAI/ae93d3e30698a3ee840da05bf9ae2844183b8b33/viewbot/livebot.exe -------------------------------------------------------------------------------- /viewbot/proxy_url.txt: -------------------------------------------------------------------------------- 1 | https://raw.githubusercontent.com/clarketm/proxy-list/master/proxy-list-raw.txt 2 | https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/socks4.txt 3 | https://raw.githubusercontent.com/ShiftyTR/Proxy-List/master/socks4.txt 4 | https://raw.githubusercontent.com/ShiftyTR/Proxy-List/master/socks5.txt 5 | https://raw.githubusercontent.com/ShiftyTR/Proxy-List/master/proxy.txt 6 | https://raw.githubusercontent.com/ShiftyTR/Proxy-List/master/https.txt 7 | https://raw.githubusercontent.com/ShiftyTR/Proxy-List/master/http.txt 8 | https://raw.githubusercontent.com/hookzof/socks5_list/master/proxy.txt 9 | https://github.com/monosans/proxy-list/raw/main/proxies/socks4.txt 10 | https://github.com/mmpx12/proxy-list/raw/master/socks4.txt 11 | https://github.com/monosans/proxy-list/raw/main/proxies_anonymous/socks4.txt 12 | https://api.proxyscrape.com/?request=getproxies&proxytype=socks4&timeout=9000&ssl=yes 13 | https://www.proxy-list.download/api/v1/get?type=socks4 14 | 15 | --------------------------------------------------------------------------------