move telegram bot to main server

This commit is contained in:
David Todd 2020-01-19 18:57:35 -06:00
parent 6979c88d14
commit 5e6c0196c8
2 changed files with 35 additions and 12 deletions

View File

@ -11,7 +11,6 @@ import datetime
import sqlite3 import sqlite3
import uuid import uuid
import os import os
from telethon.sync import TelegramClient
from .db import Database from .db import Database
class TelethonDatabase(Database): class TelethonDatabase(Database):
@ -29,17 +28,6 @@ class TelethonDatabase(Database):
""" """
super(TelethonDatabase, self).__init__(database) super(TelethonDatabase, self).__init__(database)
# Load in the API tokens required for a bot
api_id = os.environ.get('telethon_api_id', False)
api_hash = os.environ.get('telethon_api_hash', False)
api_token = os.environ.get('telethon_token', False)
# Create an instance of the Telethon bot
if api_id and api_hash and api_token:
self.bot = TelegramClient('bot', api_id, api_hash).start(bot_token=api_token)
else:
self.bot = False
# Automatically create the table if it doesn't # Automatically create the table if it doesn't
# already exist in the selected database # already exist in the selected database
self._create_table() self._create_table()

View File

@ -6,11 +6,44 @@
This file contains the web server for a simple bookmarking application This file contains the web server for a simple bookmarking application
""" """
import os
import _thread
from bottle import Bottle, run, response, route, template from bottle import Bottle, run, response, route, template
from api import API from api import API
from telethon.sync import TelegramClient, events
_api = API() _api = API()
# Load in the API tokens required for a telegram bot
api_id = os.environ.get('telethon_api_id', False)
api_hash = os.environ.get('telethon_api_hash', False)
api_token = os.environ.get('telethon_token', False)
# Create an instance of the Telethon bot
if api_id and api_hash and api_token:
bot = TelegramClient('bot', api_id, api_hash).start(bot_token=api_token)
else:
bot = False
bot_state = False
@bot.on(events.NewMessage)
async def handle_message_events(event):
if 'start' in event.raw_text:
await event.reply('started')
def start_bot_thread():
"""
We run the telegram bot in a seperate thread
to be able to also serve the HTTP content.
The bot thread will be idle most of the time
due to the async nature of it, and the fact
that it won't receive much traffic
"""
bot.start()
bot.run_until_disconnected()
@route('/') @route('/')
def index(): def index():
return "This is the index" return "This is the index"
@ -42,4 +75,6 @@ def update_bookmark_uri(bookmark_id, uri):
return _api.update_bookmark_uri(bookmark_id, uri) return _api.update_bookmark_uri(bookmark_id, uri)
if __name__ == '__main__': if __name__ == '__main__':
# Start the Telegram bot and the bottle server
_thread.start_new_thread(start_bot_thread, ())
run(host='localhost', port=8080) run(host='localhost', port=8080)