61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
from django.conf import settings
|
|
from telegram import (
|
|
ForceReply,
|
|
Update,
|
|
ReplyParameters,
|
|
)
|
|
from telegram.ext import (
|
|
Application,
|
|
CommandHandler,
|
|
MessageHandler,
|
|
filters,
|
|
CallbackContext,
|
|
)
|
|
from telegram.constants import ParseMode, ChatType
|
|
|
|
import logging
|
|
|
|
logger = logging.getLogger("root")
|
|
|
|
|
|
class TgBotApp:
|
|
_app = None
|
|
|
|
async def start(self, update: Update, context: CallbackContext):
|
|
user = update.effective_user
|
|
# logger.info(update)
|
|
await update.message.reply_html(
|
|
rf"Hi {user.mention_html()}!",
|
|
# reply_markup=ForceReply(selective=True),
|
|
reply_parameters=ReplyParameters(message_id=update.message.message_id),
|
|
)
|
|
|
|
async def set_webhook(self, url):
|
|
if not self._app:
|
|
logger.error("no app")
|
|
return
|
|
app = self._app
|
|
await app.bot.set_webhook(url, allowed_updates=Update.ALL_TYPES)
|
|
|
|
async def init_tg(self):
|
|
self._app = (
|
|
Application.builder()
|
|
.token(settings.TGBOT["token"])
|
|
.concurrent_updates(True)
|
|
.updater(None)
|
|
.build()
|
|
)
|
|
self._app.add_handler(CommandHandler("start", self.start))
|
|
self._app.add_handler(MessageHandler(filters.ChatType.PRIVATE, self.start))
|
|
|
|
logger.info(
|
|
{
|
|
"app": self._app,
|
|
"bot": self._app.bot,
|
|
"handlers": self._app.handlers,
|
|
}
|
|
)
|
|
await self._app.initialize()
|
|
await self._app.start()
|
|
return self._app
|