ahegao3,
name_bot - это все префиксы бота, на которые отвечает бот (обязательно маленькими)
name_bot = ["bot", "!", "@namebot"]
#Здесь имена обязательно маленькими буквами
#отзывается на имена в кавычках
Дальше мы сообщение приводим к маленькому регистру .lower()
Пример в коде это: received_message.lower()
Сообщение с маленьким регистром мы превращаем в список слов .split()
Пример в коде это: received_message.lower().split()
Дальше из этого списка мы берём первый элемент. Первый элемент в списке в python является 0, второй 1 и т.д..
Пример в коде это: received_message.lower().split()[0]
В данный момент времени если брать команду "! позови Алексея", то первым элементом будет являться "!"
Если взять просто: "позови Алексея", то первый элемент "позови"
Для чего нужен цикл for:
Так как сообщение у нас имеет вид "! позови Алексея" значит нужно переписать либо конструкцию if..elif.., либо убрать имя бота из сообщения. Как раз таки цикл for нужен для того, чтобы убрать имя бота от туда. Он проходит по всем элементам, которые находятся в name_bot и с помощью replace("name", "") заменяет имя бота на пустоту ""
if received_message.lower().split()[0] in name_bot:
for name_del in name_bot:
received_message = received_message.replace(name_del, "")
ahegao3, вне цикла - значит после того, как пройдет цикл, я как раз отметил первый if.. в том коде (на равне с этим if будет проверка для функции adder). На счет функции adder думаю ты сам понял. Советую расширить свои знания по работе с словарями, списками, базами хранения. Также при сравнении пришедешего сообщения и команды желательно использовать .lower(), . split() на этом все. Если что-то ещё нужно объяснить - пиши
AgentSmith, Скорее всего автор хотел донести следующие:
Он хочет написать код, который будет создавать некую область (рамку, квадрат, прямоугольник и т.д.). Потом он считывает есть ли в этой области лицо человека на котором (одета, наложена) маска.
P.s. Это не точно, но думаю, что это так.
ahegao3, сейчас расскажу..
В список cmd_1 ты добавляешь все свои команды с 1-им словом.
Если сказать грубо, то это все команды, на которые отвечает твой бот, также они являются 1 словом.
Так как мы делим сообщение, которое пришло от сервера .split() и выбираем [0] значение в списке - мы проверяем первое слово из сообщения которое пришло в нашем cmd_1. Если оно есть в командах - мы добавляем информацию в файл.
Если всё еще не понятно, то это команды твоего бота, где мы сравниваем первое слово.
С кодом могу помочь.
Saboteur, ладно, я понял. Просто у меня в коде возникает проблема с одним из тредов (он блокирует появление новых, пока сам не отработает), поэтому я решил пойти таким путём. Что с этой темой сделать (оставить или удалить)?
Saboteur, если я буду обслуживать всех людей в bot.py, то при одной из команд он будет обслуживать только того человека (от 1 до 8 минут), который её написал из-за цикла while. Естественно у меня не будет много пользователей, но человек 20 точно) Получается, что последний человек получит доступ через 76 минут (если команда у каждого ранее отрабатывала 4 минуты). Это не есть хорошо. Я создаю для каждого человека конструкцию, которая обслуживает только его. Да, есть затрата по RAM, но она для меня в данный момент не значительная.
Saboteur, в процессе работы скрипта будет создан новый файл n.py для каждого он разный. Мне нужно будет создать shell файл, который запустит этот файл. Если я сделаю запуск этого файла через сам bot.py, то он застрянет в цикле.
Теперь всё то же самое, только коротко:
Есть основной файл bot.py, он должен создать shell. Внутри shell должен быть код, который сможет запустить новый файл python, при этом, чтобы bot.py продолжал работу.
Также интересует shell на запуск нескольких файлов python
UUID (universally unique IDentifier) — это 128-битное число, которое в разработке ПО используется в качестве уникального идентификатора элементов. Его классическое текстовое представление является серией из 32 шестнадцатеричных символов, разделённых дефисами на пять групп по схеме 8-4-4-4-12.
if ans.reply_message not in [None, []] or ans.fwd_messages is not None:
#или
if ans.reply_message is not None and ans.reply_message != [] or ans.fwd_messages is not None:
name_bot - это все префиксы бота, на которые отвечает бот (обязательно маленькими)
Дальше мы сообщение приводим к маленькому регистру .lower()
Пример в коде это:
received_message.lower()
Сообщение с маленьким регистром мы превращаем в список слов .split()
Пример в коде это:
received_message.lower().split()
Дальше из этого списка мы берём первый элемент. Первый элемент в списке в python является 0, второй 1 и т.д..
Пример в коде это:
received_message.lower().split()[0]
В данный момент времени если брать команду "! позови Алексея", то первым элементом будет являться "!"
Если взять просто: "позови Алексея", то первый элемент "позови"
Для чего нужен цикл for:
Так как сообщение у нас имеет вид "! позови Алексея" значит нужно переписать либо конструкцию if..elif.., либо убрать имя бота из сообщения. Как раз таки цикл for нужен для того, чтобы убрать имя бота от туда. Он проходит по всем элементам, которые находятся в name_bot и с помощью replace("name", "") заменяет имя бота на пустоту ""