@dp.message_handler(text=['Найти группу'])
async def group(message):
def process_one(image_path, input_video_path, output_video_path) -> None:
for line in data:
делай цикл вручную, например так:while True:
line = data.readline()
if not line:
break
... # тут выполняем дальнейшие операции
Программа доходит до строки print(mydoubler(11)). Чтобы напечать результат выполнения функции mydoubler, программа вызывает эту функцию с аргументом 11, для этого программа идёт к строке mydoubler = myfunc(2).
def
, определяющий функцию myfunc
. После этого в текущей области видимости программы появляется переменная myfunc
, хранящая ссылку на объект-функцию.mydoubler = myfunc(2)
. Происходит вызов функции myfunc
, при этом ей передаётся объект-число 2 как параметр. Внутри локальной области видимости myfunc
теперь есть имя a
, ссылающееся на объект-число 2. В ходе выполнения создаётся лямбда-функция, которая ссылается на этот параметр. myfunc
, myfunc
завершает выполнение. Поскольку лямбда-функция продолжает существовать (мы её вернули), а она ссылается на объект-число 2, то этот объект тоже продолжает существовать.mydoubler
в текущей области видимости. Это позволяет её продолжать существовать (её не собирает сборщик мусора), ну и позволяет её вызвать по этому имени.mytripler = myfunc(3)
, это бы создало новую, отдельную лямбда-функцию, совершенно независимую от mydoubler
, и ссылающуюся на объект-число 3. (\d-\d{4}/\d{2,3}/)\d{0,2}(\d{2})
. Пример:import re
r = re.compile(r'(\d-\d{4}/\d{2,3}/)\d{0,2}(\d{2})')
m = r.match("1-2345/678/0099")
print(m.groups()) # выведет ('1-2345/678/', '99')
(\d{9})
import re
r = re.compile(r'(\d{9})')
m = r.match("123456789")
print(m.groups()) # выведет ('123456789', )
search_results = googlesearch.search(query, num_results=3)
внутри ask(), и обработать полученные результаты - невелико повторение. Я бы сделал именно так.# Messageable - это что-то, чему можно послать текстовое сообщение. Это может быть канал, пользователь, контекст команды...
async def search_and_reply(query: str, ctx: discord.abc.Messageable) -> None:
try:
search_results = googlesearch.search(query, num_results=3)
if search_results:
await ctx.send("Результаты поиска в Google:")
for result in search_results:
await ctx.send(result)
else:
await ctx.send("Ничего не найдено.")
except Exception as e:
await ctx.send(f"Произошла ошибка при выполнении поиска: {str(e)}")
await search_and_reply(query, ctx)
, но будет брать на себя регистрацию как обработчика команды, проверку ролей и кулдаунов, и прочую мишуру, которой не место внутри search_and_reply(). Тогда ask() может просто сделать аналогичный вызов await search_and_reply(query, channel)
в нужный момент, не беспокоясь о специфике дискорд-обработчика, так как search_and_reply() таковым не является.