Skip to content

Instantly share code, notes, and snippets.

@Romern
Last active May 18, 2020 12:20
Show Gist options
  • Save Romern/cee5cf88a16ca3490e519f2c2a24ee53 to your computer and use it in GitHub Desktop.
Save Romern/cee5cf88a16ca3490e519f2c2a24ee53 to your computer and use it in GitHub Desktop.
import logging
#import subprocess
from datetime import datetime, timedelta
from telegram.ext import CommandHandler, Updater, filters, MessageHandler
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)
updater = Updater(token=TOKEN', use_context=True)
dispatcher = updater.dispatcher
waitfor = [] # ids auf die gewartet wird das sie was schreiben, format: (id, replyUntilOrElseBan, ChatObj)
def error(update, context):
message = f"BitcoinBot:\nUpdate {update} caused error {context.error}"
logger.warning(message)
#subprocess.Popen(["/usr/bin/telegram",message])
def askAboutBitcoin(update, context):
new_members = [(i.first_name, i.id, update.message.chat) for i in update.message.new_chat_members]
welcome = ", ".join([name for (name,id,chat) in new_members])
update.message.reply_text(f"Guten Tag {welcome}, wie stehen Sie zu Bitcoin?")
waitfor.extend([(id, (datetime.now() + timedelta(minutes=5)), chat ) for (name,id,chat) in new_members])
# waitfor.extend([(id, (datetime.now() + timedelta(seconds=10)), chat ) for (name,id,chat) in new_members])
def checkIfNewUserReplied(update, context):
uid = update.message.from_user.id
checkData = [(id,w,chat) for (id,w,chat) in waitfor if id == uid]
if len(checkData)>0:
waitfor.remove(checkData[0])
def callback_minute(context):
orig = waitfor[:]
for i in range(len(orig)):
print(orig[i])
id = orig[i][0]
replyUntilOrElseBan = orig[i][1]
chat = orig[i][2]
if replyUntilOrElseBan < datetime.now():
context.bot.kick_chat_member(chat.id, id)
waitfor.remove(orig[i])
updater.job_queue.run_repeating(callback_minute, interval=60, first=0)
#updater.job_queue.run_repeating(callback_minute, interval=10, first=0)
dispatcher.add_handler(MessageHandler(filters=filters.Filters.status_update.new_chat_members, callback=askAboutBitcoin))
dispatcher.add_handler(MessageHandler(filters=filters.Filters.text, callback=checkIfNewUserReplied))
dispatcher.add_error_handler(error)
updater.start_polling()
updater.idle()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment