Код: Выделить всё
/prossime- Не могу отправлять сообщения с помощью send_match_reminder() лично, на канале или в группе.
- Я могу получить три основных команды отвечать мне даже в группах, однако хотелось бы иметь возможность реализовать эту возможность и на каналах (если бы это было возможно).
- В том случае, если на канале невозможно вызвать команды, мне бы хотелось, чтобы функция напоминания запускалась, по крайней мере, каждое утро и, если она находит совпадение, отправляла на канал сообщение с информацией о совпадении. >
Код: Выделить всё
import asyncio
import requests
import telegram
import os
import string
import locale
import random
import logging
import schedule
import time
import sqlite3
from lxml import html
from datetime import datetime
from dotenv import load_dotenv
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters, CallbackContext, CallbackQueryHandler
load_dotenv()
CONNESSIONE_DB = sqlite3.connect('JUVENTUS_MATCHES.db')
CONNESSIONE = CONNESSIONE_DB.cursor()
locale.setlocale(locale.LC_TIME, 'it_IT.UTF-8')
async def start_bot(update: Update, context: CallbackContext):
await update.message.reply_text("HI!")
.
.
.
.
.
async def get_next_match():
global CONNESSIONE_DB, CONNESSIONE
CONNESSIONE.execute("SELECT * FROM MATCHES ORDER BY DATA")
MATCHES = CONNESSIONE.fetchall()
TODAY = datetime.today().strftime("%Y-%m-%d")
for MATCH in MATCHES:
if MATCH[2] >= TODAY:
return MATCH
return None
async def get_next_10_matches():
global CONNESSIONE_DB, CONNESSIONE
CONNESSIONE.execute("SELECT * FROM MATCHES ORDER BY DATA")
MATCHES = CONNESSIONE.fetchall()
TODAY = datetime.today().strftime("%Y-%m-%d")
NEXT_10_MATCHES = []
for MATCH in MATCHES:
if MATCH[2] >= TODAY:
NEXT_10_MATCHES.append(MATCH)
if len(NEXT_10_MATCHES) == 10:
break
return NEXT_10_MATCHES
async def get_all_match():
global CONNESSIONE_DB, CONNESSIONE
CONNESSIONE.execute("SELECT * FROM MATCHES ORDER BY DATA")
MATCHES = CONNESSIONE.fetchall()
TODAY = datetime.today().strftime("%Y-%m-%d")
ALL_MATCHES = []
for MATCH in MATCHES:
ALL_MATCHES.append(MATCH)
return ALL_MATCHES
async def get_today_match():
global CONNESSIONE_DB, CONNESSIONE
TODAY = datetime.today().strftime("%Y-%m-%d")
CONNESSIONE.execute("SELECT * FROM MATCHES WHERE DATA =?", (TODAY,))
MATCHES = CONNESSIONE.fetchall()
for MATCH in MATCHES:
if MATCH[2] == TODAY:
return MATCH
return None
.
.
.
.
.
async def send_reminder(update: Update, context: CallbackContext):
MATCH = await get_today_match()
if MATCH:
MESSAGE = f"⚠️ OGGI GIOCHIAMO![/b] ⚠️\n\n"[b]
if MATCH[0] == "Serie A":
MESSAGE += f"🏆 {MATCH[0]} - {MATCH[4]}\n⚽️ {MATCH[1]}\n📅 {string.capwords(datetime.strptime(MATCH[2], '%Y-%m-%d').strftime('%A %d %B %Y'))}\n🕚 {MATCH[3]}[/b]\n\n"[b]
else:
MESSAGE += f"🏆 {MATCH[0]}\n⚽️ {MATCH[1]}\n📅 {string.capwords(datetime.strptime(MATCH[2], '%Y-%m-%d').strftime('%A %d %B %Y'))}\n🕚 {MATCH[3]}[/b]\n\n"[b]
await context.bot.send_message(chat_id=update.effective_chat.id, text=MESSAGE, parse_mode="HTML")
else:
MESSAGE = f"❗️NON CI SONO PARTITE IN PROGRAMMA❗️[/b]"
await context.bot.send_message(chat_id=update.effective_chat.id, text=MESSAGE, parse_mode="HTML")
.
.
.
.
.
def main():
app = ApplicationBuilder() \
.read_timeout(100) \
.write_timeout(100) \
.token(os.environ["BOT_TOKEN"]) \
.build()
app.add_handler(CommandHandler("start", start_bot))
app.add_handler(CommandHandler("prossima", next_match_command))
app.add_handler(CommandHandler("prossime10", next_10_matches_command))
app.add_handler(CommandHandler("calendario", get_all_command))
app.add_handler(CommandHandler("reminder", send_reminder))
app.run_polling()
if __name__ == "__main__":
main()
Подробнее здесь: https://stackoverflow.com/questions/787 ... -group-and