Skip to content

Instantly share code, notes, and snippets.

@pingiun
Created June 11, 2018 18:54
Show Gist options
  • Save pingiun/87b30b6d46ee37c72dcd096b4a53503b to your computer and use it in GitHub Desktop.
Save pingiun/87b30b6d46ee37c72dcd096b4a53503b to your computer and use it in GitHub Desktop.
from telegram.ext import Updater, CommandHandler, MessageHandler
from sqlalchemy import Column, BigInteger
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlite3 import IntegrityError
import logging
import random
engine = create_engine('sqlite:///db.db')
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
logging.basicConfig(level=logging.DEBUG)
log = logging.getLogger(__name__)
class ChatMember(Base):
__tablename__ = 'chatmember'
id = Column(BigInteger, primary_key=True)
group_id = Column(BigInteger, primary_key=True)
Base.metadata.create_all(bind=engine)
def mention(bot, update):
if update.effective_chat.type == 'private':
update.message.reply_text("Misschien even in een groep proberen")
members = ChatMember.query.filter(ChatMember.group_id == update.effective_chat.id).all()
member = random.choice(members)
chat = bot.get_chat_member(chat_id=member.group_id, user_id=member.id).user
if chat.username:
update.message.reply_text('@{}'.format(chat.username))
else:
update.message.reply_text('[{} {}](tg://user?id={})'.format(chat.first_name, chat.last_name or '', chat.id))
def message(bot, update):
if update.effective_chat.type not in ['group', 'supergroup']:
return
chatmember = ChatMember(id=update.message.from_user.id, group_id=update.effective_chat.id)
try:
db_session.add(chatmember)
db_session.commit()
except:
db_session.rollback()
def onzin(bot, update):
update.message.reply_text("Ik kan nog niks, binnenkort!!!1!1!!")
def error_handler(_, __, error):
log.error("TelegramError: {}".format(error))
def main():
updater = Updater('token')
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler(['iemand', 'someone'], mention))
dispatcher.add_handler(CommandHandler('doeiets', onzin))
dispatcher.add_handler(MessageHandler(None, message))
dispatcher.add_error_handler(error_handler)
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment