print("Hello, world!")
my_tuple = ('foo', 'bar', 'baz') # сделали кортеж
a = my_tuple[0] # взяли нулевой элемент
b = my_tuple[1] # взяли первый элемент
c = my_tuple[2] # взяли второй элемент
# код выше сработает, если в кортеже *хотя бы* три элемента
# но можно и так, при условии что в кортеже *ровно* три элемента
a, b, c = my_tuple
смотрел видеокурс на ютубе по основам пайтона
import sys, pathlib
SCRIPT_DIR = pathlib.Path(sys.argv[0]).parent # каталог, где лежит текущий выполняемый скрипт
LOG_PATH = SCRIPT_DIR / 'logs.txt'
@client.message_handler(content_types=['text'])
def save(message):
with open(LOG_PATH, 'at') as dst:
dst.write('{0.first_name}Написал {0.first_message})\n')
Насчёт закрытого чата - твой бот умеет реагировать на сообщения? (Если нет, смотри примеры и документацию по используемой библиотеке). На свои он реагировать не должен.
Проверяешь, в какой чат отправлено сообщение (бот должен знать ID этого закрытого чата).
Если это нужный чат, проверяешь, что сообщение является ответом (у объекта message вроде есть соответствующее поле, читай документацию).
Если это ответ, смотришь ID сообщения, на которое отправлен ответ, лезешь в своё хранилище, ищешь там этот ID.
Если нашел - выбираешь из хранилища соответствующий ID пользователя, и отправляешь сообщение этому пользователю.
Если же сообщение не в закрытом чате, то постишь копию в закрытый чат, получаешь ID этой копии, вносишь в хранилище её и ID пользователя.
Хранилище может быть и в памяти, конечно, но тогда перезапуск бота убьёт существующие связи между сообщениями и пользователями.