├── .gitignore ├── bot.py └── images ├── cat-cat.jpg ├── cat1.jpeg ├── cat11.jpeg ├── cat2.jpg ├── cat22.jpeg ├── cat33.jpeg ├── cat44.jpeg ├── cat55.jpeg ├── cat66.jpeg ├── cat77.jpeg ├── cat88.jpeg ├── cat_34.jpg ├── cat_4.jpeg └── cat_mew.jpeg /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | settings.py 3 | __pycache__/ 4 | .idea 5 | .DS_Store -------------------------------------------------------------------------------- /bot.py: -------------------------------------------------------------------------------- 1 | from glob import glob 2 | import logging 3 | from random import choice 4 | 5 | from emoji import emojize 6 | from telegram import ReplyKeyboardMarkup, KeyboardButton 7 | 8 | from telegram.ext import Updater, CommandHandler, MessageHandler, Filters 9 | 10 | import settings 11 | 12 | logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s', 13 | level=logging.INFO, 14 | filename='bot.log' 15 | ) 16 | 17 | 18 | def greet_user(bot, update, user_data): 19 | emo = get_user_emo(user_data) 20 | user_data['emo'] = emo 21 | text = 'Hello {}'.format(emo) 22 | update.message.reply_text(text, reply_markup=get_keyboard) 23 | 24 | 25 | def talk_to_me(bot, update, user_data): 26 | emo = get_user_emo(user_data) 27 | user_text = "Hello {} {}!, You have written: {}".format(update.message.chat.first_name, emo, 28 | update.message.text) 29 | logging.info("User: %s, Chat id: %s, Message: %s", update.message.chat.username, 30 | update.message.chat.id, update.message.text) 31 | update.message.reply_text(user_text, reply_markup=get_keyboard()) 32 | 33 | 34 | def send_cat_picture(bot, update, user_data): 35 | cat_list = glob('images/cat*.jp*g') 36 | cat_pic = choice(cat_list) 37 | bot.send_photo(chat_id=update.message.chat.id, photo=open(cat_pic, 'rb'), reply_markup=get_keyboard()) 38 | 39 | 40 | def change_avatar(bot, update, user_data): 41 | if 'emo' in user_data: 42 | del user_data['emo'] 43 | emo = get_user_emo(user_data) 44 | update.message.reply_text('Done: {}'.format(emo), reply_markup=get_keyboard()) 45 | 46 | 47 | def get_contact(bot, update, user_data): 48 | print(update.message.contact) 49 | update.message.reply_text('Done: {}'.format(get_user_emo(user_data), reply_markup=get_keyboard())) 50 | 51 | 52 | def get_location(bot, update, user_data): 53 | print(update.message.location) 54 | update.message.reply_text('Done: {}'.format(get_user_emo(user_data), reply_markup=get_keyboard())) 55 | 56 | 57 | def get_user_emo(user_data): 58 | if 'emo' in user_data: 59 | return user_data['emo'] 60 | else: 61 | user_data['emo'] = emojize(choice(settings.USER_EMOJI), use_aliases=True) 62 | return user_data['emo'] 63 | 64 | 65 | def get_keyboard(): 66 | contact_button = KeyboardButton('Send contact', request_contact=True) 67 | contact_location = KeyboardButton('Send location', request_location=True) 68 | my_keyboard = ReplyKeyboardMarkup([ 69 | ['Send ma a cat', 'Change my avatar'], 70 | [contact_button, contact_location], 71 | ], resize_keyboard=True 72 | ) 73 | return my_keyboard 74 | 75 | 76 | def main(): 77 | 78 | super_bot = Updater(settings.API_KEY) # use_context=True 79 | logging.info('The bot is running') 80 | 81 | sb = super_bot.dispatcher 82 | sb.add_handler(CommandHandler('start', greet_user, pass_user_data=True)) 83 | sb.add_handler(CommandHandler('cat', send_cat_picture, pass_user_data=True)) 84 | sb.add_handler(MessageHandler(Filters.regex('(Send me a cat)'), send_cat_picture, pass_user_data=True)) 85 | sb.add_handler(MessageHandler(Filters.regex('(Change my avatar)'), change_avatar, pass_user_data=True)) 86 | sb.add_handler(MessageHandler(Filters.text, talk_to_me, pass_user_data=True)) 87 | sb.add_handler(MessageHandler(Filters.contact, get_contact, pass_user_data=True)) 88 | sb.add_handler(MessageHandler(Filters.location, get_location, pass_user_data=True)) 89 | 90 | super_bot.start_polling() 91 | super_bot.idle() 92 | 93 | 94 | main() 95 | -------------------------------------------------------------------------------- /images/cat-cat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat-cat.jpg -------------------------------------------------------------------------------- /images/cat1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat1.jpeg -------------------------------------------------------------------------------- /images/cat11.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat11.jpeg -------------------------------------------------------------------------------- /images/cat2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat2.jpg -------------------------------------------------------------------------------- /images/cat22.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat22.jpeg -------------------------------------------------------------------------------- /images/cat33.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat33.jpeg -------------------------------------------------------------------------------- /images/cat44.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat44.jpeg -------------------------------------------------------------------------------- /images/cat55.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat55.jpeg -------------------------------------------------------------------------------- /images/cat66.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat66.jpeg -------------------------------------------------------------------------------- /images/cat77.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat77.jpeg -------------------------------------------------------------------------------- /images/cat88.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat88.jpeg -------------------------------------------------------------------------------- /images/cat_34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat_34.jpg -------------------------------------------------------------------------------- /images/cat_4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat_4.jpeg -------------------------------------------------------------------------------- /images/cat_mew.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamfreenow/learnbot/be084051beb13b140334c6ce03276d7b59e9c0cd/images/cat_mew.jpeg --------------------------------------------------------------------------------