Реализовать метод отправки напоминаний от бота Telegram на канал/группу и приватный чат.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Реализовать метод отправки напоминаний от бота Telegram на канал/группу и приватный чат.

Сообщение Anonymous »

Мой бот Telegram действует как календарь матчей моей любимой команды. Он должен извлечь этот календарь из сайта, публикующего календарь матчей, поместить этот календарь в локальную базу данных SQLite и получить к нему доступ с помощью команд в Telegram (

Код: Выделить всё

/prossime
, /prossime10, /calendario). Я также хочу, чтобы, если он найдет совпадение с сегодняшней датой, отправил сообщение на канал Telegram. Мне удалось получить напоминание о работе в качестве команды, но я понятия не имею, как заставить его работать для автоматического выполнения.
  • Не могу отправлять сообщения с помощью 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»