Уведомления

Группа в Telegram: @pythonsu

#1 Май 26, 2017 13:26:10

KOHb
Зарегистрирован: 2017-05-26
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите переписать код правильно.

Пишу телеграммного бота который в базу заносит имя и id пользователя. В дальнейшем хотелось бы реализовать проверку по id и не создавать новых таблиц в базе. Что-то запутался с функциями и понимаю что пишу ужасный код. Помогите пожалуйста сделать правильно ))))

 # -*- coding: utf-8 -*-
import telebot
import sqlite3
bot = telebot.TeleBot(token)
@bot.message_handler(commands=['start'])
def handle_start(message):
    FirstMessage = bot.send_message(message.from_user.id, 'Привет мой друг! Я Бот! Бот-обормот, Пожалуйста скажи как тебя зовут.')
    bot.register_next_step_handler(FirstMessage, HelloMessage)
def HelloMessage(message):
    bot.send_message(message.chat.id, 'Привет, {UserName}. Рад тебя видеть.'.format(UserName=message.text))
    UserName = message.text
    UserID = message.from_user.id
#Конектимся к базе и определяем курсор
    conn = sqlite3.connect('BaseIdUser.db')
    c = conn.cursor()
    row = c.fetchone()
#Функция занесения пользователя в базу
    def add_user(username,userId):
        c.execute("INSERT INTO TelegramUsers (Name,TelegramID) VALUES ('%s','%s')"%(username,userId))
        conn.commit()
#Получаем имя и ID
    Name = UserName
    TelegramID = UserID
#Делаем запрос в базу
    add_user(Name,TelegramID)
# закрываем соединение с базой
    c.close()
    conn.close()
bot.polling(none_stop=True)

Отредактировано FishHook (Май 26, 2017 20:46:11)

Офлайн

#2 Май 26, 2017 20:50:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите переписать код правильно.

 [code XXX][/code]

спам бот?



Офлайн

#3 Май 29, 2017 10:04:32

KOHb
Зарегистрирован: 2017-05-26
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите переписать код правильно.

FishHook
нет, не совсем разобрался со вставками

Офлайн

#4 Май 29, 2017 10:10:44

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите переписать код правильно.

KOHb
Помогите пожалуйста сделать правильно
Давайте начнем с PEP8



Офлайн

#5 Май 29, 2017 18:07:25

KOHb
Зарегистрирован: 2017-05-26
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите переписать код правильно.

FishHook
Спасибо за совет, а что именно в разметке и именах не так?

Офлайн

#6 Май 30, 2017 05:42:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите переписать код правильно.

KOHb
Спасибо за совет, а что именно в разметке и именах не так?
Зачем я вам буду пересказывать документ, когда вы вполне способны прочитать его самостоятельно?



Офлайн

#7 Май 30, 2017 10:10:35

KOHb
Зарегистрирован: 2017-05-26
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите переписать код правильно.

FishHook
Заучив инструкцию по пилотированию космического аппарата “Союз 5” я не только смогу запустить квадрокоптер, но и с лёгкостью разберусь с вертолётом на радиоуправлении.

Офлайн

#8 Май 30, 2017 10:21:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите переписать код правильно.

Ну значит не способны. Смиритесь.



Офлайн

#9 Май 31, 2017 03:36:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9715
Репутация: +  842  -
Профиль   Отправить e-mail  

Помогите переписать код правильно.

KOHb
а что именно в разметке и именах не так?
Длинные строки - это основа. От этого долго уходили и уж о чём о чём, а о максимальной длине строки где только не говорится (в разных языках программирования, в разных программах).
(Хотя в новомодном Go опять вернулись к старому. И когда смотришь код на Go где-нибудь на Github'е, его надо проматывать в право, потому что он не помещается в окне.)

Вот твой код, который подан на stdin программе python3-pep8
stdin:4:1: E302 expected 2 blank lines, found 0
stdin:6:80: E501 line too long (130 > 79 characters)
stdin:8:1: E302 expected 2 blank lines, found 0
stdin:9:80: E501 line too long (107 > 79 characters)
stdin:12:1: E265 block comment should start with '# '
stdin:16:1: E265 block comment should start with '# '
stdin:17:5: E301 expected 1 blank line, found 0
stdin:17:26: E231 missing whitespace after ','
stdin:18:80: E501 line too long (101 > 79 characters)
stdin:18:83: E228 missing whitespace around modulo operator
stdin:18:93: E231 missing whitespace after ','
stdin:20:1: E265 block comment should start with '# '
stdin:23:1: E265 block comment should start with '# '
stdin:24:18: E231 missing whitespace after ','
stdin:28:28: W292 no newline at end of file

А вот python3-pylint
[guest@localhost py]$ python3-pylint telebot_script.py
No config file found, using default configuration
************* Module telebot_script
C: 6, 0: Line too long (130/80) (line-too-long)
C: 9, 0: Line too long (107/80) (line-too-long)
C: 17, 0: Exactly one space required after comma
def add_user(username,userId):
^ (bad-whitespace)
C: 18, 0: Line too long (101/80) (line-too-long)
C: 18, 0: Exactly one space required after comma
c.execute("INSERT INTO TelegramUsers (Name,TelegramID) VALUES ('%s','%s')"%(username,userId))
^ (bad-whitespace)
C: 24, 0: Exactly one space required after comma
add_user(Name,TelegramID)
^ (bad-whitespace)
C: 1, 0: Missing module docstring (missing-docstring)
F: 1, 0: Unable to import 'telebot' (import-error)
C: 3, 0: Invalid constant name "bot" (invalid-name)
E: 3,22: Undefined variable 'token' (undefined-variable)
C: 5, 0: Missing function docstring (missing-docstring)
C: 6, 4: Invalid variable name "FirstMessage" (invalid-name)
C: 8, 0: Invalid function name "HelloMessage" (invalid-name)
C: 8, 0: Missing function docstring (missing-docstring)
C: 10, 4: Invalid variable name "UserName" (invalid-name)
C: 11, 4: Invalid variable name "UserID" (invalid-name)
C: 14, 4: Invalid variable name "c" (invalid-name)
C: 17, 4: Invalid argument name "userId" (invalid-name)
C: 17, 4: Missing function docstring (missing-docstring)
C: 21, 4: Invalid variable name "Name" (invalid-name)
C: 22, 4: Invalid variable name "TelegramID" (invalid-name)
W: 15, 4: Unused variable 'row' (unused-variable)


Report
======
23 statements analysed.

Statistics by type
------------------

+---------+-------+-----------+-----------+------------+---------+
|type |number |old number |difference |%documented |%badname |
+=========+=======+===========+===========+============+=========+
|module |1 |NC |NC |0.00 |0.00 |
+---------+-------+-----------+-----------+------------+---------+
|class |0 |NC |NC |0 |0 |
+---------+-------+-----------+-----------+------------+---------+
|method |0 |NC |NC |0 |0 |
+---------+-------+-----------+-----------+------------+---------+
|function |3 |NC |NC |0.00 |33.33 |
+---------+-------+-----------+-----------+------------+---------+



Messages by category
--------------------

+-----------+-------+---------+-----------+
|type |number |previous |difference |
+===========+=======+=========+===========+
|convention |19 |NC |NC |
+-----------+-------+---------+-----------+
|refactor |0 |NC |NC |
+-----------+-------+---------+-----------+
|warning |1 |NC |NC |
+-----------+-------+---------+-----------+
|error |1 |NC |NC |
+-----------+-------+---------+-----------+



Messages
--------

+-------------------+------------+
|message id |occurrences |
+===================+============+
|invalid-name |9 |
+-------------------+------------+
|missing-docstring |4 |
+-------------------+------------+
|line-too-long |3 |
+-------------------+------------+
|bad-whitespace |3 |
+-------------------+------------+
|unused-variable |1 |
+-------------------+------------+
|undefined-variable |1 |
+-------------------+------------+
|import-error |1 |
+-------------------+------------+



Global evaluation
-----------------
Your code has been rated at -0.87/10

Duplication
-----------

+-------------------------+------+---------+-----------+
| |now |previous |difference |
+=========================+======+=========+===========+
|nb duplicated lines |0 |NC |NC |
+-------------------------+------+---------+-----------+
|percent duplicated lines |0.000 |NC |NC |
+-------------------------+------+---------+-----------+



Raw metrics
-----------

+----------+-------+------+---------+-----------+
|type |number |% |previous |difference |
+==========+=======+======+=========+===========+
|code |24 |82.76 |NC |NC |
+----------+-------+------+---------+-----------+
|docstring |0 |0.00 |NC |NC |
+----------+-------+------+---------+-----------+
|comment |0 |0.00 |NC |NC |
+----------+-------+------+---------+-----------+
|empty |5 |17.24 |NC |NC |
+----------+-------+------+---------+-----------+



[guest@localhost py]$
Как видно из pylint, тут имена неправильно даются переменным. Часть имён слишком короткая и неинформативная, а часть имён переменных названа по принципу, который используется только для классов.
Всё это описано в PEP8.

Важна читаемость кода, чтобы по имени можно было сразу понять, что это переменная, а не класс, или что это константа, а не переменная. Без такого точного именования надо всё время лазить по коду и смотреть, где что объявлено, чтобы точно знать, что это. Тратится время впустую.



Отредактировано py.user.next (Май 31, 2017 03:51:51)

Офлайн

#10 Май 31, 2017 10:30:24

KOHb
Зарегистрирован: 2017-05-26
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите переписать код правильно.

py.user.next
PEP8
Спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version