-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbot2.py
More file actions
66 lines (46 loc) · 2.08 KB
/
bot2.py
File metadata and controls
66 lines (46 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from glob import glob1
import logging
import random
import os
from emoji import emojize
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import settings
avatars = [':smiley_cat:', ':smiling_imp:', ':panda_face:', ':dog:']
logging.basicConfig(level=logging.INFO, filename="bot.log")
def get_avatar(user_data):
if user_data.get('avatar'):
return user_data.get('avatar')
else:
user_data['avatar'] = emojize(random.choice(avatars), use_aliases=True)
return user_data['avatar']
def reply_to_start_command(bot, update, user_data):
first_name = update.effective_user.first_name
last_name = update.effective_user.last_name
avatar = get_avatar(user_data)
text = "Привет, {} {}! Я бот, который понимает команду /start".format(first_name, avatar)
logging.info("Пользователь {} {} нажал {}".format(first_name, last_name, "/start"))
update.message.reply_text(text)
def count_words(bot, update, args, user_data):
avatar = get_avatar(user_data)
text = "{} количество слов {}".format(avatar, len(args))
update.message.reply_text(text)
def chat_with_user(bot, update, user_data):
avatar = get_avatar(user_data)
text = "{} {}".format(update.message.text, avatar)
update.message.reply_text(text)
def send_cat(bot, update, user_data):
cat_list = glob1("cats", "*.jp*g")
cat_pic = os.path.join('cats', random.choice(cat_list))
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, photo=open(cat_pic, 'rb'))
def start_bot():
my_bot = Updater(settings.TELEGRAM_API_KEY)
dp = my_bot.dispatcher
dp.add_handler(CommandHandler("start", reply_to_start_command, pass_user_data=True))
dp.add_handler(CommandHandler("countwords", count_words, pass_args=True, pass_user_data=True))
dp.add_handler(CommandHandler("cat", send_cat, pass_user_data=True))
dp.add_handler(MessageHandler(Filters.text, chat_with_user, pass_user_data=True))
my_bot.start_polling()
my_bot.idle()
if __name__ == "__main__":
start_bot()