python - 将电报机器人与 Django 网站一起部署到生产环境
问题描述
这是我的 bot.py 脚本:
import logging
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
# Enable logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
logger = logging.getLogger(__name__)
# Define a few command handlers. These usually take the two arguments update and
# context. Error handlers also receive the raised TelegramError object in error.
def start(update, context):
update.message.reply_text("Start")
def main():
updater = Updater(TOKEN, use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler("start", start))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
我可以在本地运行它python bot.py
但是,我不知道如何部署到 Django 生产服务器。
如何让它工作view.py
?我必须为它创建一个视图吗?任何人都可以帮忙吗?
解决方案
您需要在某处创建和存储Dispatcher
(像 Singleton 一样)并Update
手动序列化而不使用内置更新程序。请参阅没有线程的示例。
from telegram import Bot, Update
from telegram.ext import Dispatcher
def create_dispatcher(token):
# Create bot, update queue and dispatcher instances
bot = Bot(token)
dispatcher = Dispatcher(bot, None, workers=0)
##### Register handlers here #####
return dispatcher
dispatcher = create_dispatcher(TOKEN_HERE)
def webhook_view(request)
update = Update.de_json(json.loads(request.body.decode()), dispatcher.bot)
dispatcher.process_update(update)
return '{"status": "ok"}', 200
您还需要为此设置Webhooks
推荐阅读
- javascript - 另一个未处理的拒绝(错误):引发了跨域错误
- oracle - kafka connect(oracle)数据表示,对象代替字符串,字节代替数字
- c# - Stacktrace 仅显示错误例程中的第一行并且不完整
- node.js - 如何在移动和 Web 前端使用相同的 nodeJS api
- asp.net - ASP.NET Core AJAX 帖子
- google-apps-script - 谷歌表格根据条件获取特定单元格范围的每日/每周计数总和
- flutter - 在 initState 中调用提供者上下文
- r - 不同页面上的多个图形并另存为pdf
- javascript - 语法错误;导入声明只能出现在模块的顶层
- database - 如何查询特定图形到 RDF 数据库