Помогите с кодом для телеграмм канала

tabasaran

Новичок
Пользователь
Апр 27, 2022
3
0
1
Всем привет. Небольшая просьба "сильно ногами не бить" Python изучаю самостоятельно буквально пару месяцев.
Хотел попросить помощи с кодом для тереграмм канала анекдот. Моя задумка такая, что бы после запуска бота через определенное количество времени (примерно час) в мой канал отправлялось сообщение которое рандомно берется и читается из папки (в папке лежат только файлы в txt формате и их там много примерно пару тысяч) но сталкнулся с такой проблемой. Если указываю директорию и конкретно файл file = open(r'C:\txt\175.txt', encoding='UTF-8') то сообщение выводится в канал нормально т.к указад кодировку UTF-8. Но как только прописываю with open(os.path.join(DIR, random.choice(os.listdir(DIR)))) as file: получается "абра кадабра" полная неразбериха. Подскажите как правильно сделать пожалуйста.
И еще вопрос до кучи:) как лучще это сделать безприрывно. Читал что если через цикл while True: то это кустарно, а хотелось бы правильно.
1-й код выводит сообщение как в текстовом файле
2-й код выдает абракадабра))
Python:
import telebot
import time
bot = telebot.TeleBot('Мой токен')

time.sleep(5)
file = open(r'C:\txt\180.txt', encoding='UTF-8')
txt = file.read()
file.close()
bot.send_message('@мой канал', txt)
bot.polling()

Python:
import telebot
import os, random
import time

bot = telebot.TeleBot('Мой токен')
DIR = r'C:\Users\botte\PycharmProjects\test\txt'
time.sleep(5)
with open(os.path.join(DIR, random.choice(os.listdir(DIR)))) as file:

    bot.send_message('@мой канал', file)

bot.polling()
 
Последнее редактирование:

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
933
208
43
20
Москва
А что тебе мешает во втором способе также задать кодировку?
Python:
with open(os.path.join(DIR, random.choice(os.listdir(DIR))), encoding='UTF-8') as file:
    pass

На счет второго - например есть библиотека sched
 
  • Мне нравится
Реакции: tabasaran

tabasaran

Новичок
Пользователь
Апр 27, 2022
3
0
1
А что тебе мешает во втором способе также задать кодировку?
Python:
with open(os.path.join(DIR, random.choice(os.listdir(DIR))), encoding='UTF-8') as file:
    pass

На счет второго - например есть библиотека sched
Спасибо. Все получилось но сообщения отправляются в канал не полные посоветуйте что изучить или почитать ?
 

Вложения

  • 2022-05-08_00-59-51.png
    2022-05-08_00-59-51.png
    254 КБ · Просмотры: 2

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
933
208
43
20
Москва
Python:
bot.send_message('@мой канал', file)

замени на

Python:
bot.send_message('@мой канал', file.read())

Чтение всего файла
 
  • Мне нравится
Реакции: tabasaran

tabasaran

Новичок
Пользователь
Апр 27, 2022
3
0
1
Python:
bot.send_message('@мой канал', file)

замени на

Python:
bot.send_message('@мой канал', file.read())

Чтение всего файла
Еще раз большое спасибо.
Вопрос. Буду дальше развивать данный код мне писать в этой теме или создавать новую?
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
933
208
43
20
Москва
Создавай новые, а то получится одна очень длинная, неудобно будет
 
  • Мне нравится
Реакции: tabasaran

Форум IT Специалистов