· 6 years ago · Jan 23, 2020, 11:24 AM
1import os # from psycopg2
2import requests
3import smtplibaio
4import telebot
5import pyowm
6from telebot.types import Message
7from random import randint
8import smtplib
9from email.mime.text import MIMEText
10from email.mime.multipart import MIMEMultipart
11import psycopg2
12
13stroka=''
14
15token = "990483237:AAHV_NWo_rl3dhuM0HgXpzLDQQZ-7p_dZm8"
16bot = telebot.TeleBot(token)
17'''main_url = f'https://api.telegram.org/bot{token}'
18
19answer = { #
20 'chat_id':287656148, # Данные, которы мы хотим отправить, chat_id - id нашего пользователя, берем из test_json
21 'text': 'Wake up, Neo' #
22} #
23
24test = requests.get(f'{main_url}/getMe') #основная информация
25test1 = requests.get(f'{main_url}/getUpdates') #получаение обновлений с последнего запроса
26#test2 = requests.get(f'{main_url}/sendMessage', data=answer) # отправка данных
27#print(test2.json())
28
29'''
30
31def __init__(self):
32 self.conn = psycopg2.connect(dbname=os.getenv('Dvfu_schedule_bot'), user=os.getenv('Dvfu_schedule_bot'),
33 password = os.getenv('d_O5K4uRJGJEibpP1DyT5BOD2U2JI7x-'),
34 host=os.getenv('postgres://usqtsycy:d_O5K4uRJGJEibpP1DyT5BOD2U2JI7x-@rajje.db.elephantsql.com:5432/usqtsycy'))
35 self.cur = self.conn.cursor()
36
37
38@bot.message_handler(commands=['start','help'])
39def command_handler(message: Message):
40 bot.reply_to(message, 'Poka chto nichego netu =(')
41
42
43@bot.message_handler(commands=['weather'])
44def weather_1(message: Message):
45 owm = pyowm.OWM('1586c818dc67d8e6a6f3db038ae3cbae')
46 weather = owm.weather_at_place('Владивосток')
47 w = weather.get_weather()
48 desc = w.get_detailed_status()
49 temperature = w.get_temperature('celsius')['temp']
50 hum = w.get_humidity()
51 wind = w.get_wind()['speed']
52 clearSky = u'\U00002600'
53 rain = u'\U00002614'
54 bot.send_message(message.chat.id, 'Сейчас во Владивостоке: ' + str(desc) + clearSky +'\n' +
55 'температура: ' + str(temperature) + ' С' + '\n' + 'влажность: '
56 + str(hum) + ' % ' + rain + '\n' + 'скорость ветра: ' + str(wind) + 'м\с.')
57
58
59@bot.message_handler(commands=['reg'])
60def send_code_1(message: Message):
61 bot.send_message(message.chat.id, 'Введите, пожалуйста, свою электронну почту dvfu')
62
63
64@bot.message_handler(func=lambda message: '@gmail.com' in message.text)
65def got_email(message: Message, self):
66 record_creation(message.text.strip(), self)
67 SendMail('dvfu.schedule@gmail.com', 'Azsuna_power99', message.text.strip())
68 bot.send_message(message.chat.id, 'На вашу почту был выслан код подтверждения. Введите его:')
69
70
71@bot.message_handler(func=lambda message: message.text.isnumeric() and 1000 <= int(message.text) <= 9999)
72def got_code(self, message):
73 self.cur.execute('''SELECT * FROM users WHERE users.mail = %s ''', (stroka,))
74 records = self.cur.fetchall()
75 bot.send_message(message.chat.id, 'Код принят, вы зарегестрированы!')
76
77
78'''
79host_mail - адрес на основе которого создастся SMTP сервер,
80 также с этого же адреса и будет отправлено сообщение
81host_password - пароль к host аккаунту
82receiver - адрес получателя
83content - содержимое сообщения
84'''
85
86
87def SendMail(host_mail, host_password, receiver):
88 message = randint(1000,9999)
89 code_assignment(receiver, message)
90 message = message.as_string()
91 server = smtplib.SMTP('smtp.gmail.com', 587)
92 server.starttls()
93 server.login(host_mail, host_password)
94 server.sendmail(host_mail, receiver, message)
95 server.quit()
96
97
98def record_creation(mail, self): # создание нового пользователя в БД
99 self.cursor.execute('''INSERT INTO users (mail, status) VALUES (mail = %s, 0)''', (mail,))
100 self.conn.commit()
101
102
103def code_assignment(self, mail, code): # присвоение кода безопасности к почте пользователя
104 self.cur.execute('''SELECT * FROM users WHERE users.mail = %s
105 INSERT INTO users (confirmation_code) VALUES (code = %s)''', (mail, code,))
106 self.cur.fetchall()
107
108'''
109@bot.message_handler(content_types=['text']) # реагирует только на текст
110def echo_digits(message: Message): #
111 if "Привет" or "Hello" in message.text: # если в тексте найдено слово, выводит ответ
112 bot.reply_to(message, 'Hello') #
113 return #
114 bot.reply_to(message, str(random.random()))# рандомное число от 0 до 1
115'''
116
117
118print('Bot has started')
119bot.polling() # задержка 4 сек.