Всем привет, я недавно доделал свой первый проект им оказался бот отвечающий людям в вк. Хочу узнать у более опытных специалистов мнение о нем, также ошибки или недостатки его которые можно улучшить/переделать
import time
import vk_api
import datetime
import random
from translate_lib import get_translation
import requests
dict_nechet = { # расписание
'понедельник': 'нечетный понедельник у нас\n1 пара - русский язык/литература\n'
'2 пара - индивидуальный проект\n3 пара - русский язык/литература \n4 пара - пусто',
'вторник': 'В нечетный вторник у нас \n1 пара - пусто \n2 пара - физ-ра \n3 пара - информатика \n'
'4 пара - математика \n5 пара - история ',
'среда': 'В нечетную среду у нас \n 1 пара русский язык/литература \n'
'2 пара - английский \n 3 пара - математика',
'четверг': 'В нечетный четверг у нас \n1 пара - пусто \n2 пара - химия\n'
'3 пара - физ-ра\n4 пара - обществознание',
'пятница': 'В четную пятницу у нас \n1 пара - ОБЖ \n2 пара - российское казачество \n'
'3 пара - математика', # учителя
'история': 'Куропаткина Ирина Владимировна 24 кабинет',
'ип': 'Гусева Елена Львовна 107 кабинет ВЦ или 25 кабинет',
'английский': 'Маркова Виктория Юрьевна 27кабинет\nПономарева Любовь Владимировна 44 кабинет',
'математика': 'Сорокин Юрий Сергеевич 31 кабинет',
'физ-ра': 'Надаева Нина Владимировна\nВоедилова Татьяна Сергнеевна',
'литра': 'Елена Анатольевна Тарасова 23 кабинет',
'общество': 'Соколова Тамара Ивановна 121 кабинет',
'казачество': 'Самойлова Екатерина Никитична 44 кабинет',
'химия': 'Куантаева Татьяна Юрьевна 32 кабинет',
'обж': 'Куантаева Татьяна Юрьевна 32 кабинет',
'информатика': 'Биткина Елена Сергеевна 27 кабинет', # help
'обед': '1 смена: 11.50-12.10 - 1,2 этажи старого здания\n'
'2 смена: 12.30-12.50 - 1 этаж нового здания, 3 этаж старого здания\n'
'3 смена: 13.20-13.40 - 3,4 этажи нового здания, 4 этаж старого здания\n',
'команды': '1)Для получения расписания на определенный день: \n'
'Пишите день недели: понедельник \n'
'2)Чтобы узнать имя преподователя, пишите имя + предмет: имя обж\n'
'3)Команда "погода название города" выводит прогноз погоды в выбранном существующем городе городе\n'
'4)Команда "лень" помогает придумать отмазку\n'
}
dict_chet = { # расписание
'понедельник': 'четный понедельник у нас\n1 пара - пусто\n2 пара - индивидуальный проект\n '
'3 пара - русский язык/литература \n4 пара - обществознание',
'вторник': 'В четный вторник у нас \n1 пара - пусто \n2 пара - физ-ра \n3 пара - информатика \n'
'4 пара - математика \n5 пара - история ',
'среда': 'В четную среду у нас \n 1 пара русский язык/литература \n'
'2 пара - английский \n 3 пара - математика',
'четверг': 'В четный четверг у нас \n1 пара - история \n2 пара - химия\n'
'3 пара - Английский\n4 пара - обществознание',
'пятница': 'В нечетную пятницу у нас \n1 пара - ОБЖ \n2 пара - российское казачество \n'
'3 пара - математика', # учителя
'история': 'Куропаткина Ирина Владимировна 24 кабинет',
'ип': 'Гусева Елена Львовна 107 кабинет ВЦ или 25 кабинет',
'английский': 'Маркова Виктория Юрьевна 27кабинет\nПономарева Любовь Владимировна 44 кабинет',
'математика': 'Сорокин Юрий Сергеевич 31 кабинет',
'физ-ра': 'Надаева Нина Владимировна\nВоедилова Татьяна Сергнеевна',
'литра': 'Елена Анатольевна Тарасова 23 кабинет',
'общество': 'Соколова Тамара Ивановна 121 кабинет',
'казачество': 'Самойлова Екатерина Никитична 44 кабинет',
'химия': 'Куантаева Татьяна Юрьевна 32 кабинет',
'обж': 'Куантаева Татьяна Юрьевна 32 кабинет',
'информатика': 'Биткина Елена Сергеевна 27 кабинет', # help
'обед': '1 смена: 11.50-12.10 - 1,2 этажи старого здания\n'
'2 смена: 12.30-12.50 - 1 этаж нового здания, 3 этаж старого здания\n'
'3 смена: 13.20-13.40 - 3,4 этажи нового здания, 4 этаж старого здания\n',
'команды': '1)Для получения расписания на определенный день: \n'
'Пишите день недели: понедельник \n'
'2)Чтобы узнать имя преподователя, пишите имя + предмет: имя обж\n'
'3)Команда "погода название города" выводит прогноз погоды '
'в выбранном существующем городе городе\n'
'4)Команда "лень" помогает придумать отмазку\n'
}
def otmazki():
otvet = ['Не сегодня', 'Каждая лень имеет свою причину. Займись чем-то примитивным.',
'Чтобы обленить тело, надо как можно меньше пользоваться умом и жить только здесь и сейчас.',
'Насладиться ленью по-настоящему может лишь тот, у кого есть куча совершенно неотложных дел.'
' С каждой секундой наслаждение растет.',
'Завтра', 'Лучше отдохнуть', 'Работа не волк', 'Еще куча времени', 'Это не так важно',
'Зачем себя пересиливать', 'Тебе это не нужно на самом деле', 'Полежать всегда лучше',
'Ютуб сам себя не посмотрит', 'Всё равно все тлен', 'Ещё успееться',
'Расслабься - стресса хватит на всех',
'От трудной работы еще никто не умирал. Но зачем испытывать судьбу?',
'Не спеши выполнять приказ — его могут отменить.',
'Если отложить дело надолго, то его либо выполнит кто-нибудь другой, '
'либо оно вообще перестанет быть нужным.',
'Тому, кто сам ничего не делает, все кажется по плечу', 'Работа – это разновидность невроза',
'Лучше пузо от пива, чем горб от работы',
'В настоящее время те, кто выполняет самую тяжелую работу, оплачиваются ниже всего; '
'у тех, чья работа полегче, и вознаграждение побольше. '
'Однако больше всего получают те, кто ничего не делает']
write_msg(item[u'chat_id'], random.choice(otvet))
def weather():
try:
gorod = userMessage[7:]
temp = get_translation(gorod, 'en')
s_city = str(temp['text'][0])
s_city = s_city.lower()
city_id = 0
appid = "e794afc97e1f4dfa762338e2036891fe"
res = requests.get("http://api.openweathermap.org/data/2.5/find",
params={'q': s_city, 'type': 'like', 'units': 'metric', 'APPID': appid})
data = res.json()
cities = ["{}".format(d['name'])
for d in data['list']]
city_id = data['list'][0]['id']
except Exception as e:
print("Exception (find):", e)
pass
try:
res = requests.get("http://api.openweathermap.org/data/2.5/weather",
params={'id': city_id, 'units': 'metric', 'lang': 'ru', 'APPID': appid})
data = res.json()
except Exception as e:
print("Exception (weather):", e)
pass
try:
temp2 = str(temp['text'][0])
temp2 = temp2.lstrip().title().lower()
if temp2 == cities[0].lower():
write_msg(item[u'chat_id'], u'Погодные условия:' + str(data['weather'][0]['description']) +
'\nСредняя температура в городе ' + gorod.title() + ' : ' + str(data['main']['temp']))
else:
write_msg(item[u'chat_id'], u'город не найден или неправильно задан')
except Exception as e:
print(e)
write_msg(item[u'chat_id'], u'город не найден возможна возникла ошибка попробуйте ещё раз')
pass
def translate():
word = str(userMessage[9:])
temp = get_translation(word, 'ru')
wordtranslate = temp['text'][0]
if word == wordtranslate:
write_msg(item[u'chat_id'], 'неперводимый текст')
else:
write_msg(item[u'chat_id'], wordtranslate)
vk = vk_api.VkApi(login='логин', password='пароль')
vk.auth()
values = {'out': 0, 'count': 1, 'time_offset': 10}
def write_msg(chat_id, s):
vk.method('messages.send', {'chat_id': chat_id, 'message': s})
while True:
now = datetime.datetime.now()
date = datetime.datetime.today()
week = int(date.strftime('%W'))
if now.weekday() == 5 or now.weekday() == 6:
week = week + 1
response = vk.method('messages.get', values)
if response['items']:
values['last_message_id'] = response['items'][0]['id']
for item in response['items']:
userMessage = str(response['items'][0]['body'])
userMessage = userMessage.lower()
if week % 2 == 0:
try:
write_msg(item[u'chat_id'], dict_nechet[userMessage])
except KeyError:
pass
else:
try:
write_msg(item[u'chat_id'], dict_chet[userMessage])
except KeyError:
pass
if ('лень' or ' помоги придумать отмазку') in userMessage:
otmazki()
elif 'погода' in userMessage and len(userMessage) > 8:
weather()
elif 'переведи' in userMessage and userMessage[:8] == 'переведи':
translate()
time.sleep(5)