├── .gitignore ├── DMer.py ├── LICENSE ├── README.md └── chromedriver.exe /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /DMer.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | from selenium.webdriver.chrome.options import Options 4 | import time 5 | import schedule 6 | 7 | x = 0 8 | 9 | def dmer(): 10 | global x 11 | usrnames = ['instagram', 'twitter'] # username whom you will send the message 12 | 13 | chrome_options = Options() 14 | chrome_options.add_argument( 15 | '--user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1') 16 | browser = webdriver.Chrome("chromedriver.exe", options=chrome_options) 17 | browser.get('https://www.instagram.com/accounts/login/') 18 | 19 | time.sleep(2) 20 | 21 | usrname_bar = browser.find_element_by_name('username') 22 | passwrd_bar = browser.find_element_by_name('password') 23 | 24 | username = 'USERNAME' # Enter your username here 25 | password = 'PASSWORD' # Enter your password here 26 | 27 | usrname_bar.send_keys(username) 28 | passwrd_bar.send_keys(password + Keys.ENTER) 29 | 30 | time.sleep(11) 31 | 32 | def send_msg(usrnames): 33 | browser.get('https://www.instagram.com/direct/new/') 34 | 35 | time.sleep(5) 36 | 37 | to_btn = browser.find_element_by_name('queryBox') 38 | to_btn.send_keys(usrnames) 39 | 40 | time.sleep(8) 41 | 42 | chk_mrk = browser.find_element_by_class_name('dCJp8') 43 | chk_mrk.click() 44 | 45 | time.sleep(3) 46 | 47 | nxt_btn = browser.find_element_by_xpath('//div[@class="mXkkY KDuQp"]') 48 | nxt_btn.click() 49 | 50 | time.sleep(6) 51 | 52 | txt_box = browser.find_element_by_tag_name('textarea') 53 | txt_box.send_keys(f"Hi @{usrnames} ! What's up ?") # Customize your message 54 | 55 | time.sleep(2) 56 | 57 | snd_btn = browser.find_elements_by_css_selector('.sqdOP.yWX7d.y3zKF') 58 | snd_btnn = snd_btn[len(snd_btn)-1] 59 | snd_btnn.click() 60 | 61 | time.sleep(4) 62 | 63 | count = 0 64 | try: 65 | for usrnamee in usrnames: 66 | send_msg(usrnamee) 67 | count += 1 68 | 69 | except TypeError: 70 | print('Failed!') 71 | 72 | browser.quit() 73 | 74 | print(f''' 75 | Successfully Sent {count} Massages 76 | ''') 77 | 78 | x += 1 79 | 80 | 81 | timee = "08:51" # Specific Time When The message will be send 82 | 83 | try: 84 | schedule.every().day.at(timee).do(dmer) 85 | except TypeError: 86 | pass 87 | 88 | try: 89 | while True and x != 1: 90 | schedule.run_pending() 91 | time.sleep(1) 92 | except UnboundLocalError: 93 | pass 94 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 P Sinha 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 | Instagram Auto DM 2 | ======== 3 | Auto DMer 4 | 5 | ## Before Running `DMer.py` 6 | 7 | * Open DMer.py File and Edit The Following Lines: 8 | 9 | 1) `username = 'USERNAME' # Enter your username here` [line:24] 10 | 11 | 2) `password = 'PASSWORD' # Enter your password here` [line:25] 12 | 13 | 3) `timee = "21:44" # Specific Time When The message will be send` [line:91] 14 | 15 | 4) `txt_box.send_keys(f"Hi @{usrnames} ! What's up ?") # Messege that you want to send` [line:53] 16 | 17 | 5) `usrnames = ['instagram', 'twitter'] # username whom you will send the message` [line:11] 18 | 19 | 20 | Ensure that you have Chrome installed and the 21 | [`chromedriver` ](https://chromedriver.chromium.org/downloads) that matches 22 | your Chrome version available on your `$PATH`. You may have to update this from time to time. 23 | 24 | ## Requirements 25 | 26 | * [Python](https://www.python.org/) 27 | * `python` on the PATH 28 | * [The Requests Library](http://python-requests.org) for Python: `pip install requests` 29 | * Install Selenium: 30 | 31 | ```bash 32 | pip install selenium 33 | ``` 34 | * Install Schedule: 35 | 36 | ```bash 37 | pip install schedule 38 | ``` 39 | 40 | ## Run 41 | 42 | * Run the program using: 43 | 44 | ```bash 45 | python DMer.py 46 | ``` 47 | -------------------------------------------------------------------------------- /chromedriver.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b31ngd3v/instagram-auto-dm/709b0c8e34b53c0f80c3e36187539f7aa7bfdfa1/chromedriver.exe --------------------------------------------------------------------------------