diff --git a/davtelepot/__init__.py b/davtelepot/__init__.py index 8b0f041..86521a3 100644 --- a/davtelepot/__init__.py +++ b/davtelepot/__init__.py @@ -7,7 +7,7 @@ __author__ = "Davide Testa" __email__ = "davide@davte.it" __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __license__ = "GNU General Public License v3.0" -__version__ = "2.0.6" +__version__ = "2.0.7" __maintainer__ = "Davide Testa" __contact__ = "t.me/davte" diff --git a/examples/more_bots_together.py b/examples/more_bots_together.py new file mode 100644 index 0000000..e5f99b4 --- /dev/null +++ b/examples/more_bots_together.py @@ -0,0 +1,125 @@ +"""Example showing how to run more bots with davtelepot. + +In this example, one bot will ask for updates with long polling and another + one will receive them via webhook. +""" + +# Standard library modules +import logging +import os +import sys + +# Third party modules +try: + from davtelepot.bot import Bot +except ImportError: + logging.error( + "Please install davtelepot library.\n" + "The use if a python virtual environment is advised.\n\n" + "```bash\n" + "pip -m venv env\n" + "env/bin/pip install davtelepot\n" + "env/bin/python davtelepot/examples/a_simple_bot.py" + "```" + ) + sys.exit(1) + +# Project modules +from a_simple_bot import initialize_bot + +# Get path of current script +path = os.path.dirname(__file__) + + +def _main(): + # Import or prompt user for bot token + try: + from secrets import webhook_bot_token + except ImportError: + webhook_bot_token = input("Enter bot token:\t\t") + with open( + f'{path}/secrets.py', + 'a' # Append to file, create if it does not exist + ) as secrets_file: + secrets_file.write(f'webhook_bot_token = "{webhook_bot_token}"\n') + try: + from secrets import hostname + except ImportError: + hostname = input("Enter host name:\t\t") + with open( + f'{path}/secrets.py', + 'a' # Append to file, create if it does not exist + ) as secrets_file: + secrets_file.write(f'hostname = "{hostname}"\n') + try: + from secrets import certificate + except ImportError: + certificate = input("Enter ssl certificate:\t\t") + with open( + f'{path}/secrets.py', + 'a' # Append to file, create if it does not exist + ) as secrets_file: + secrets_file.write(f'certificate = "{certificate}"\n') + try: + from secrets import local_host + except ImportError: + local_host = input("Enter local host:\t\t") + with open( + f'{path}/secrets.py', + 'a' # Append to file, create if it does not exist + ) as secrets_file: + secrets_file.write(f'local_host = "{local_host}"\n') + try: + from secrets import port + except ImportError: + port = input("Enter local port:\t\t") + with open( + f'{path}/secrets.py', + 'a' # Append to file, create if it does not exist + ) as secrets_file: + secrets_file.write(f'port = "{port}"\n') + try: + from secrets import long_polling_bot_token + except ImportError: + long_polling_bot_token = input("Enter bot token:\t\t") + with open( + f'{path}/secrets.py', + 'a' # Append to file, create if it does not exist + ) as secrets_file: + secrets_file.write( + f'long_polling_bot_token = "{long_polling_bot_token}"\n' + ) + # Set logging preferences + log_formatter = logging.Formatter( + "%(asctime)s [%(module)-15s %(levelname)-8s] %(message)s", + style='%' + ) + root_logger = logging.getLogger() + root_logger.setLevel(logging.DEBUG) + consoleHandler = logging.StreamHandler() + consoleHandler.setFormatter(log_formatter) + consoleHandler.setLevel(logging.DEBUG) + root_logger.addHandler(consoleHandler) + + # Instantiate, initialize and make bots run. + webhook_bot = Bot( + token=webhook_bot_token, + database_url=f"{path}/webhook_bot.db", + hostname=hostname, + certificate=certificate + ) + initialize_bot(webhook_bot) + long_polling_bot = Bot( + token=long_polling_bot_token, + database_url=f"{path}/long_polling_bot.db", + ) + initialize_bot(long_polling_bot) + logging.info("Send a KeyboardInterrupt (ctrl+C) to stop bots.") + Bot.run( + local_host=local_host, + port=port + ) + + +if __name__ == '__main__': + _main()