stop_polling_site = None # контролирует, продолжаем мы проверять новости или нет
async def get_news(message: types.Message):
"Эта функция только проверяет и отправляет новости, она не является обработчиком событий"
fresh_news = chek_news_update() # ты выполняешь сетевую операцию синхронно. Зачем?!
if len(fresh_news) >= 1:
for k, v in sorted(fresh_news.items()):
news = f'{hcode(v["dates_id_print"])}\n' \
f'{hlink(v["aubl_title"], v["aubl_url_split_print"])}'
await message.answer(news) # <<< не лучший способ отправлять сообщения в канал, но это твое дело.
print('ok news')
else:
print('no')
@dp.message_handler(commands='startnews')
async def start_polling_news(message: types.Message):
"Эта функция обрабатывает команду для начала опроса и реализует цикл опроса."
global stop_polling_site
if stop_polling_site is not None:
await message.answer("Мы уже проверяем новости.")
return
stop_polling_site = asyncio.Event()
while True: # цикл опроса новостей
try:
# реализуем ожидание без остановки остального бота. Таймаут - сколько ждем в секундах.
# такой подход используется вместо asyncio.sleep(),
# чтобы можно было в любой момент остановить опрос новостей.
await asyncio.wait_for(stop_polling_site.wait(), timeout=600)
except asyncio.TimeoutError:
# дождались таймаута - работаем.
try:
await get_news(message)
except:
pass # была ошибка при получении новостей, думай сам что тут делать
else:
# таймаута не было - значит, поступила команда на остановку цикла
break
stop_polling_site = None
@dp.message_handler(commands='stopnews')
async def stop_polling_news(message: types.Message):
"Эта функция обрабатывает команду для окончания опроса."
global stop_polling_site
if stop_polling_site is None:
# цикл и так не работает
await message.answer("Мы и так не проверяем новости.")
else:
# говорим остановить цикл
stop_polling_site.set()
wb = openpyxl.load_workbook(wb)
, но это явно не оно.class MainApp(App):
def build(self):
main_layout = FloatLayout()
# INSERT CODE HERE
return main_layout
if __name__ == '__main__':
app = MainApp()
app.run()
with open('file.py', 'rt', encoding='utf-8') as src:
data = src.read()
with open('file2.py', 'wt', encoding='utf-8') as dest:
dest.write(data.replace('# INSERT CODE HERE', 'тут твой код'))
from collections import Counter
counts = Counter(reaction.emoji for reaction in message.reactions)
if counts['✅'] > counts['❌']:
KABOOM()
connect.row_factory = sqlite3.Row
cursor.execute("""SELECT OrderNumber FROM orders ORDER BY OrderNumber DESC LIMIT 1;""")
row = cursor.fetchone()
ID = row['OrderNumber']
@app.on_message(filters.text)
def message(client, message):
msg = message.text
decorator = app.on_message(filters.text)
def message(client, message):
msg = message.text
# функция заменяется на результат работы декоратора - на ту же самую или другую функцию
message = decorator(message)
queue_len = len(self.song_queue[ctx.guild.id])
KeyError: 902227097647468664
result = введённое_тобой_выражение
if result is not None:
print(repr(result))
foo
bar
"foo\nbar"
по видеоуроку ХаудиХо
import sys
import pathlib
script_path = pathlib.Path(sys.argv[0]).parent # абсолютный путь до каталога, где лежит скрипт
conn = sqlite3.connect(script_path / "Database.db") # формируем абсолютный путь до файла базы