Inoltrare messaggi da Telegram a Discord tramite webhook

di il
0 risposte

Inoltrare messaggi da Telegram a Discord tramite webhook

Spero che qualcuno qui possa aiutarmi con un problema che sto riscontrando nel mio progetto del bot su Telegram. Sto lavorando su un bot che dovrebbe inoltrare i messaggi inviati in un canale Telegram, dove il bot è stato aggiunto, su un server Discord tramite webhook.

Ho configurato correttamente il bot su Telegram e ottenuto con successo il webhook su Discord. Tuttavia, non riesco a far sì che i messaggi inviati nel canale Telegram vengano inoltrati correttamente al server Discord tramite il webhook. Stranamente, il bot riesce a rilevare i messaggi dalle chat private con il bot, ma non dal canale.

Ho verificato attentamente la documentazione di entrambe le piattaforme e seguito tutti i passaggi necessari, ma non sono riuscito a risolvere il problema.

Apprezzerei molto se qualcuno con esperienza in questo settore potesse darmi una mano o suggerirmi dove potrei aver commesso degli errori. Qualsiasi aiuto o consiglio sarebbe estremamente utile.

Grazie in anticipo per il vostro tempo e assistenza.

import os
import logging
import requests
from telegram import Update, Bot
from telegram.ext import Updater, CallbackContext, CommandHandler, MessageHandler, Filters

# Set up logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)

# Set up Telegram bot and Discord webhook
TELEGRAM_BOT_TOKEN = ''
DISCORD_WEBHOOK_URL = ''

# Create Telegram bot updater and dispatcher
updater = Updater(token=TELEGRAM_BOT_TOKEN, use_context=True)
dispatcher = updater.dispatcher

# Define function to send messages to Discord webhook
def send_to_discord(message):
    # Prepare the data to send
    data = {
        "content": message
    }

    # Send the POST request
    response = requests.post(DISCORD_WEBHOOK_URL, json=data)

    # Check if the request was successful
    if response.status_code == 204:
        logger.info("Message sent to Discord successfully")
    else:
        logger.error(f"Failed to send message to Discord: {response.status_code} {response.reason}")

# Define function to handle messages and forward them to Discord
def handle_message(update: Update, context: CallbackContext):
    message = update.message
    if message is not None:
        message_text = message.text
        logger.info(f"Received message from Telegram: {message_text}")

        # Forward the message to Discord
        send_to_discord(message_text)
    else:
        logger.warning("Received an update without a message")

# Add a message handler to the dispatcher
message_handler = MessageHandler(Filters.text & (~Filters.command), handle_message)
dispatcher.add_handler(message_handler)

# Define function to forward existing messages in the channel
def forward_existing_messages():
    # Create a Telegram bot instance
    bot = Bot(token=TELEGRAM_BOT_TOKEN)

    # Retrieve the last update ID
    updates = bot.get_updates()
    last_update_id = updates[-1].update_id if updates else 0

    # Retrieve the messages in the channel with an offset
    updates = bot.get_updates(offset=last_update_id + 1)

    # Loop through the messages and forward them to Discord
    for update in updates:
        message = update.message
        message_text = message.text
        logger.info(f"Forwarding existing message from Telegram: {message_text}")

        # Forward the message to Discord
        send_to_discord(message_text)

# Forward existing messages in the channel
forward_existing_messages()

# Start the bot
updater.start_polling()
updater.idle()
Devi accedere o registrarti per scrivere nel forum
0 risposte