diff --git a/LICENSE b/LICENSE index 2f77c35..1038e51 100644 --- a/LICENSE +++ b/LICENSE @@ -5,9 +5,8 @@ Copyright (c) 2017 Sergey Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +to use, copy, modify, merge, publish, distribute, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..e1d63e3 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +bot: python3 bot.py diff --git a/README.md b/README.md index b0fdc09..11931b1 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,16 @@ # tgvkbot Бот позволяет получать и отправлять сообщения VK находясь в Telegram -Поддерживаются вебхуки и лонгполлинг, закомментируйте и раскомментируйте нужные строки + +[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) + + +[Ветка](https://github.com/Kylmakalle/tgvkbot/tree/webhook) для деплоя на локальной машине (поддерживаются вебхуки и лонгполлинг, закомментируйте и раскомментируйте нужные строки) Настройка вебхуков по гайду от [@Groosha](https://www.gitbook.com/book/groosha/telegram-bot-lessons) +## Stay Tuned! -[Использование](https://www.asergey.me/tgvkbot/usage) + +_Полноценные комментарии к коду будут чуть позже_ \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..2ad6f46 --- /dev/null +++ b/app.json @@ -0,0 +1,34 @@ +{ + "name": "tgvkbot", + "description": "Бот позволяет получать и отправлять сообщения VK находясь в Telegram", + "repository": "https://github.com/Kylmakalle/tgvkbot", + "keywords": ["vk", "bot", "telegram"], + "website": "https://asergey.me/tgvkbot/", + "buildpacks":[ + { + "url": "heroku/python" + } + ], + "env": { + "TELEGRAM_TOKEN": { + "description": "Telegram bot API токен от https://t.me/BotFather", + "value": "123456789:AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLL" + }, + "VK_APP": { + "description": "ID VK приложения из https://vk.com/apps?act=manage", + "required": true + } + }, + "addons": [ + { + "plan": "heroku-redis:hobby-dev", + "as": "Redis" + } + ], +"formation": { + "bot": { + "quantity": 1, + "size": "free" + } + } +} diff --git a/bot.py b/bot.py index f014708..52ea4d3 100644 --- a/bot.py +++ b/bot.py @@ -13,9 +13,7 @@ import time from PIL import Image from telebot import types -import cherrypy - -from credentials import token, vk_app_id, bot_url, local_port +from credentials import token, vk_app_id from vk_messages import VkMessage, VkPolling vk_threads = {} @@ -24,8 +22,7 @@ vk_dialogs = {} FILE_URL = 'https://api.telegram.org/file/bot{0}/{1}' -tokens_pool = redis.ConnectionPool(host='localhost', port=6379, db=0) -vk_tokens = redis.StrictRedis(connection_pool=tokens_pool) +vk_tokens = redis.from_url(os.environ.get("REDIS_URL")) currentchat = {} @@ -662,6 +659,7 @@ def reply_text(message): create_thread(message.from_user.id, code) bot.send_message(message.from_user.id, 'Вход выполнен в аккаунт {} {}!'.format(user['first_name'], user['last_name'])).wait() + bot.send_message(message.from_user.id, '[Использование](https://asergey.me/tgvkbot/usage/)', parse_mode='Markdown').wait() except: @@ -678,11 +676,9 @@ def reply_text(message): except Exception: bot.reply_to(message, 'Произошла неизвестная ошибка при отправке', parse_mode='Markdown').wait() - print('Error: {}'.format(traceback.format_exc())) - -# bot.polling(none_stop=True) -class WebhookServer(object): +bot.polling(none_stop=True) +"""class WebhookServer(object): # index равнозначно /, т.к. отсутствию части после ip-адреса (грубо говоря) @cherrypy.expose def index(self): @@ -700,4 +696,4 @@ if __name__ == '__main__': cherrypy.config.update( {'server.socket_host': '127.0.0.1', 'server.socket_port': local_port, 'engine.autoreload.on': False, 'log.screen': False}) - cherrypy.quickstart(WebhookServer(), '/', {'/': {}}) + cherrypy.quickstart(WebhookServer(), '/', {'/': {}})""" diff --git a/credentials.py b/credentials.py index 771a575..3bfa200 100644 --- a/credentials.py +++ b/credentials.py @@ -1,4 +1,3 @@ -token = '123456789:hciowedjejd092jjasdasdmdkpoaasd' -vk_app_id = "5678910" -bot_url = 'www.mybot.com' -local_port = 7777 \ No newline at end of file +import os +token = os.environ['TELEGRAM_TOKEN'] +vk_app_id = os.environ['VK_APP'] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b250be9 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +pyTelegramBotAPI +vk +redis +Pillow +ujson +wget diff --git a/runtime.txt b/runtime.txt new file mode 100644 index 0000000..c91e43b --- /dev/null +++ b/runtime.txt @@ -0,0 +1 @@ +python-3.6.1 diff --git a/vk_messages.py b/vk_messages.py index 4755be0..5a9a165 100644 --- a/vk_messages.py +++ b/vk_messages.py @@ -7,9 +7,10 @@ import vk import ujson import wget + logging.basicConfig(format='%(levelname)-8s [%(asctime)s] %(message)s', level=logging.WARNING, filename='vk.log') -tokens_pool = redis.ConnectionPool(host='localhost', port=6379, db=0) -vk_tokens = redis.StrictRedis(connection_pool=tokens_pool) +vk_tokens = redis.from_url(os.environ.get("REDIS_URL")) + class VkPolling: