kopia lustrzana https://github.com/J-Rios/TLG_JoinCaptchaBot
				
				
				
			Support for actual python-telegram-bot v12.5.1.
							rodzic
							
								
									a0f4ce7422
								
							
						
					
					
						commit
						2b35354649
					
				| 
						 | 
				
			
			@ -1,2 +1,2 @@
 | 
			
		|||
python_telegram_bot==11.1.0
 | 
			
		||||
python_telegram_bot==12.5.1
 | 
			
		||||
Pillow==6.2.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ Creation date:
 | 
			
		|||
Last modified date:
 | 
			
		||||
    04/04/2020
 | 
			
		||||
Version:
 | 
			
		||||
    1.7.2
 | 
			
		||||
    1.8.0
 | 
			
		||||
'''
 | 
			
		||||
 | 
			
		||||
####################################################################################################
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +115,7 @@ CONST = {
 | 
			
		|||
    "DEV_BTC": "3N9wf3FunR6YNXonquBeWammaBZVzTXTyR",
 | 
			
		||||
 | 
			
		||||
    # Bot version
 | 
			
		||||
    "VERSION": "1.7.2 (04/04/2020)"
 | 
			
		||||
    "VERSION": "1.8.0 (04/04/2020)"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,7 @@ Creation date:
 | 
			
		|||
Last modified date:
 | 
			
		||||
    04/04/2020
 | 
			
		||||
Version:
 | 
			
		||||
    1.7.2
 | 
			
		||||
    1.8.0
 | 
			
		||||
'''
 | 
			
		||||
 | 
			
		||||
####################################################################################################
 | 
			
		||||
| 
						 | 
				
			
			@ -31,11 +31,10 @@ from time import time, sleep, strptime, mktime, strftime
 | 
			
		|||
from threading import Thread, Lock
 | 
			
		||||
from operator import itemgetter
 | 
			
		||||
from collections import OrderedDict
 | 
			
		||||
from telegram import MessageEntity, ParseMode, InputMediaPhoto,  InlineKeyboardButton, \
 | 
			
		||||
        InlineKeyboardMarkup
 | 
			
		||||
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, RegexHandler, \
 | 
			
		||||
        ConversationHandler, CallbackQueryHandler
 | 
			
		||||
from random import randint
 | 
			
		||||
from telegram import (Update, InputMediaPhoto, InlineKeyboardButton, InlineKeyboardMarkup)
 | 
			
		||||
from telegram.ext import (CallbackContext, Updater, CommandHandler, MessageHandler, Filters, 
 | 
			
		||||
    CallbackQueryHandler)
 | 
			
		||||
 | 
			
		||||
from constants import CONST, TEXT
 | 
			
		||||
from tsjson import TSjson
 | 
			
		||||
| 
						 | 
				
			
			@ -479,10 +478,11 @@ def tlg_leave_chat(bot, chat_id):
 | 
			
		|||
 | 
			
		||||
### Received Telegram not-command messages handlers ###
 | 
			
		||||
 | 
			
		||||
def msg_new_user(bot, update):
 | 
			
		||||
def msg_new_user(update: Update, context: CallbackContext):
 | 
			
		||||
    '''New member join the group event handler'''
 | 
			
		||||
    global to_delete_join_messages_list
 | 
			
		||||
    global new_users_list
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    # Get message data
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    # Determine configured bot language in actual chat
 | 
			
		||||
| 
						 | 
				
			
			@ -644,8 +644,9 @@ def msg_new_user(bot, update):
 | 
			
		|||
                printts(" ")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def msg_notext(bot, update):
 | 
			
		||||
def msg_notext(update: Update, context: CallbackContext):
 | 
			
		||||
    '''All non-text messages handler.'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    # Check for normal or edited message
 | 
			
		||||
    msg = getattr(update, "message", None)
 | 
			
		||||
    if msg is None:
 | 
			
		||||
| 
						 | 
				
			
			@ -686,10 +687,11 @@ def msg_notext(bot, update):
 | 
			
		|||
        break
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def msg_nocmd(bot, update):
 | 
			
		||||
def msg_nocmd(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Non-command text messages handler'''
 | 
			
		||||
    global to_delete_join_messages_list
 | 
			
		||||
    global new_users_list
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    # Check for normal or edited message
 | 
			
		||||
    msg = getattr(update, "message", None)
 | 
			
		||||
    if msg is None:
 | 
			
		||||
| 
						 | 
				
			
			@ -848,9 +850,10 @@ def msg_nocmd(bot, update):
 | 
			
		|||
        break
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def button_request_captcha(bot, update):
 | 
			
		||||
def button_request_captcha(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Button "Other Captcha" pressed handler'''
 | 
			
		||||
    global new_users_list
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    query = update.callback_query
 | 
			
		||||
    # Ignore if the query come from an unexpected user
 | 
			
		||||
    if query.data != str(query.from_user.id):
 | 
			
		||||
| 
						 | 
				
			
			@ -904,8 +907,9 @@ def button_request_captcha(bot, update):
 | 
			
		|||
 | 
			
		||||
### Received Telegram command messages handlers ###
 | 
			
		||||
 | 
			
		||||
def cmd_start(bot, update):
 | 
			
		||||
def cmd_start(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /start message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
    lang = get_chat_config(chat_id, "Language")
 | 
			
		||||
| 
						 | 
				
			
			@ -916,8 +920,9 @@ def cmd_start(bot, update):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, TEXT[lang]["START"])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_help(bot, update):
 | 
			
		||||
def cmd_help(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /help message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
    lang = get_chat_config(chat_id, "Language")
 | 
			
		||||
| 
						 | 
				
			
			@ -929,8 +934,9 @@ def cmd_help(bot, update):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_commands(bot, update):
 | 
			
		||||
def cmd_commands(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /commands message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
    lang = get_chat_config(chat_id, "Language")
 | 
			
		||||
| 
						 | 
				
			
			@ -942,8 +948,10 @@ def cmd_commands(bot, update):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, commands_text)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_language(bot, update, args):
 | 
			
		||||
def cmd_language(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /language message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    args = context.args
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
| 
						 | 
				
			
			@ -978,8 +986,10 @@ def cmd_language(bot, update, args):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_time(bot, update, args):
 | 
			
		||||
def cmd_time(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /time message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    args = context.args
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
| 
						 | 
				
			
			@ -1015,8 +1025,10 @@ def cmd_time(bot, update, args):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_difficulty(bot, update, args):
 | 
			
		||||
def cmd_difficulty(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /difficulty message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    args = context.args
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
| 
						 | 
				
			
			@ -1051,8 +1063,10 @@ def cmd_difficulty(bot, update, args):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_captcha_mode(bot, update, args):
 | 
			
		||||
def cmd_captcha_mode(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /captcha_mode message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    args = context.args
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
| 
						 | 
				
			
			@ -1084,8 +1098,10 @@ def cmd_captcha_mode(bot, update, args):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_welcome_msg(bot, update, args):
 | 
			
		||||
def cmd_welcome_msg(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /welcome_msg message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    args = context.args
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
| 
						 | 
				
			
			@ -1120,8 +1136,10 @@ def cmd_welcome_msg(bot, update, args):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_add_ignore(bot, update, args):
 | 
			
		||||
def cmd_add_ignore(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /add_ignore message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    args = context.args
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
| 
						 | 
				
			
			@ -1161,8 +1179,10 @@ def cmd_add_ignore(bot, update, args):
 | 
			
		|||
    tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_remove_ignore(bot, update, args):
 | 
			
		||||
def cmd_remove_ignore(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /remove_ignore message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    args = context.args
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
| 
						 | 
				
			
			@ -1199,8 +1219,9 @@ def cmd_remove_ignore(bot, update, args):
 | 
			
		|||
    tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_ignore_list(bot, update):
 | 
			
		||||
def cmd_ignore_list(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /ignore_list message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
| 
						 | 
				
			
			@ -1227,8 +1248,9 @@ def cmd_ignore_list(bot, update):
 | 
			
		|||
    tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_enable(bot, update):
 | 
			
		||||
def cmd_enable(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /enable message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
| 
						 | 
				
			
			@ -1253,8 +1275,9 @@ def cmd_enable(bot, update):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_disable(bot, update):
 | 
			
		||||
def cmd_disable(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /disable message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
| 
						 | 
				
			
			@ -1279,8 +1302,9 @@ def cmd_disable(bot, update):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_version(bot, update):
 | 
			
		||||
def cmd_version(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /version message handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    chat_type = update.message.chat.type
 | 
			
		||||
    lang = get_chat_config(chat_id, "Language")
 | 
			
		||||
| 
						 | 
				
			
			@ -1292,8 +1316,9 @@ def cmd_version(bot, update):
 | 
			
		|||
        tlg_send_selfdestruct_msg(bot, chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_about(bot, update):
 | 
			
		||||
def cmd_about(update: Update, context: CallbackContext):
 | 
			
		||||
    '''Command /about handler'''
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    lang = get_chat_config(chat_id, "Language")
 | 
			
		||||
    bot_msg = TEXT[lang]["ABOUT_MSG"].format(CONST["DEVELOPER"], CONST["REPOSITORY"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1301,7 +1326,8 @@ def cmd_about(bot, update):
 | 
			
		|||
    bot.send_message(chat_id, bot_msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cmd_captcha(bot, update):
 | 
			
		||||
def cmd_captcha(update: Update, context: CallbackContext):
 | 
			
		||||
    bot = context.bot
 | 
			
		||||
    chat_id = update.message.chat_id
 | 
			
		||||
    user_id = update.message.from_user.id
 | 
			
		||||
    captcha_level = get_chat_config(chat_id, "Captcha_Difficulty_Level")
 | 
			
		||||
| 
						 | 
				
			
			@ -1500,18 +1526,8 @@ def main():
 | 
			
		|||
    initialize_resources()
 | 
			
		||||
    printts("Resources initialized.")
 | 
			
		||||
    # Create an event handler (updater) for a Bot with the given Token and get the dispatcher
 | 
			
		||||
    updater = Updater(CONST["TOKEN"])
 | 
			
		||||
    updater = Updater(CONST["TOKEN"], use_context=True)
 | 
			
		||||
    dp = updater.dispatcher
 | 
			
		||||
    # Set to dispatcher not text messages handler
 | 
			
		||||
    dp.add_handler(MessageHandler(Filters.photo | Filters.audio | Filters.voice |
 | 
			
		||||
            Filters.video | Filters.sticker | Filters.document | Filters.location |
 | 
			
		||||
            Filters.contact, msg_notext, edited_updates=True))
 | 
			
		||||
    # Set to dispatcher a not-command text messages handler
 | 
			
		||||
    dp.add_handler(MessageHandler(Filters.text, msg_nocmd, edited_updates=True))
 | 
			
		||||
    # Set to dispatcher a new member join the group and member left the group events handlers
 | 
			
		||||
    dp.add_handler(MessageHandler(Filters.status_update.new_chat_members, msg_new_user))
 | 
			
		||||
    # Set to dispatcher request new captcha button callback handler
 | 
			
		||||
    dp.add_handler(CallbackQueryHandler(button_request_captcha))
 | 
			
		||||
    # Set to dispatcher all expected commands messages handler
 | 
			
		||||
    dp.add_handler(CommandHandler("start", cmd_start))
 | 
			
		||||
    dp.add_handler(CommandHandler("help", cmd_help))
 | 
			
		||||
| 
						 | 
				
			
			@ -1529,6 +1545,16 @@ def main():
 | 
			
		|||
    dp.add_handler(CommandHandler("version", cmd_version))
 | 
			
		||||
    dp.add_handler(CommandHandler("about", cmd_about))
 | 
			
		||||
    #dp.add_handler(CommandHandler("captcha", cmd_captcha)) # Just for debug
 | 
			
		||||
    # Set to dispatcher a not-command text messages handler
 | 
			
		||||
    dp.add_handler(MessageHandler(Filters.text, msg_nocmd))
 | 
			
		||||
    # Set to dispatcher not text messages handler
 | 
			
		||||
    dp.add_handler(MessageHandler(Filters.photo | Filters.audio | Filters.voice |
 | 
			
		||||
            Filters.video | Filters.sticker | Filters.document | Filters.location |
 | 
			
		||||
            Filters.contact, msg_notext))
 | 
			
		||||
    # Set to dispatcher a new member join the group and member left the group events handlers
 | 
			
		||||
    dp.add_handler(MessageHandler(Filters.status_update.new_chat_members, msg_new_user))
 | 
			
		||||
    # Set to dispatcher request new captcha button callback handler
 | 
			
		||||
    dp.add_handler(CallbackQueryHandler(button_request_captcha))
 | 
			
		||||
    # Launch the Bot ignoring pending messages (clean=True) and get all updates (cllowed_uptades=[])
 | 
			
		||||
    updater.start_polling(clean=True, allowed_updates=[])
 | 
			
		||||
    printts("Bot setup completed. Bot is now running.")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue