Example showing how to run more bots together
This commit is contained in:
parent
925c03b1ed
commit
b0149da520
@ -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"
|
||||
|
||||
|
125
examples/more_bots_together.py
Normal file
125
examples/more_bots_together.py
Normal file
@ -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()
|
Loading…
x
Reference in New Issue
Block a user