-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbot.py
More file actions
80 lines (66 loc) · 2.83 KB
/
bot.py
File metadata and controls
80 lines (66 loc) · 2.83 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from datetime import date
from emoji import emojize
import ephem
from glob import glob
import logging
from random import randint, choice
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import settings
logging.basicConfig(filename='bot.log', level=logging.INFO)
def greet_user(update, context):
context.user_data['emoji'] = get_smile(context.user_data)
smile = context.user_data['emoji']
update.message.reply_text(f'Здравствуй пользователь! {smile}')
def talk_to_me(update, context):
text = update.message.text
context.user_data['emoji'] = get_smile(context.user_data)
smile = context.user_data['emoji']
update.message.reply_text(f"{text} {smile}")
def get_smile(user_data):
if 'emoji' not in user_data:
smile = choice(settings.USER_EMOJI)
return emojize(smile, use_aliases=True)
return user_data['emoji']
def planetary_constellation(update, context):
current_date = date.today()
planet_name = update.message.text.split()[-1].capitalize()
planet = getattr(ephem, planet_name)(current_date)
constellation = ephem.constellation(planet)
update.message.reply_text(f'Планета {planet_name} находиться в созвездии: {constellation[-1]}')
def play_random_numbers(user_number):
bot_number = randint(user_number-10, user_number+10)
if user_number > bot_number:
message = f"Ваше число {user_number}, моё {bot_number}, вы выиграли"
elif user_number == bot_number:
message = f"Ваше число {user_number}, моё {bot_number}, ничья"
else:
message = f"Ваше число {user_number}, моё {bot_number}, вы проиграли"
return message
def guess_number(update, context):
if context.args:
try:
user_number = int(context.args[0])
message = play_random_numbers(user_number)
except (TypeError, ValueError):
message = "Введите целое число"
else:
message = "Введите число"
update.message.reply_text(message)
def send_cat_picture(update, context):
cat_photo_list = glob('images/cat*.jp*g')
cat_photo_filename = choice(cat_photo_list)
chat_id = update.effective_chat.id
context.bot.send_photo(chat_id=chat_id, photo=open(cat_photo_filename, 'rb'))
def main():
mybot = Updater(settings.API_KEY, use_context=True)
dp = mybot.dispatcher
dp.add_handler(CommandHandler("start", greet_user))
dp.add_handler(CommandHandler("planet", planetary_constellation))
dp.add_handler(CommandHandler("guess", guess_number))
dp.add_handler(CommandHandler("cat", send_cat_picture))
dp.add_handler(MessageHandler(Filters.text, talk_to_me))
logging.info('bot started')
mybot.start_polling()
mybot.idle()
if __name__ == '__main__':
main()