Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 18, 2024 20:13:53

Dober_Show
Зарегистрирован: 2024-11-18
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает мост между Discord и Telegram

Проблема заключается в том что программа втыкается на месте подключения к Discord боту. При этом ошибок никаких не выдаёт. На всякий скажу что похожий код используя те же библиотеки работает.

 import asyncio
from telethon import TelegramClient, events, errors as telethon_errors
import discord
from discord import Intents
import traceback
 
# Замените на ваши данные
TELEGRAM_API_ID = TELEGRAM_API_ID
TELEGRAM_API_HASH = "TELEGRAM_API_HASH"
DISCORD_TOKEN = "DISCORD_TOKEN_BOT" 
 
# ID каналов Discord
DISCORD_CHANNEL_ALFA_ID = CHANNEL_ALFA
DISCORD_CHANNEL_BETA_ID = CHANNEL_BETA
 
async def main():
    try:
        async with TelegramClient('my_telegram_session', TELEGRAM_API_ID, TELEGRAM_API_HASH) as telegram_client:
            intents = Intents.default()
            intents.message_content = True # Важно!  Разрешает чтение содержимого сообщений
 
            async with discord.Client(intents=intents) as discord_client:
                try:
                    await discord_client.wait_until_ready()
                    print(f'Logged in as {discord_client.user}')
                except asyncio.CancelledError:
                    print("Discord connection cancelled.")
                    return
 
                @telegram_client.on(events.NewMessage(pattern=r'#alfa\s+.*'))
                async def handler_alfa(event):
                    try:
                        message = event.raw_text[5:]
                        alfa_channel = discord_client.get_channel(DISCORD_CHANNEL_ALFA_ID)
                        if alfa_channel:
                            await alfa_channel.send(message)
                    except Exception as e:
                        print(f"Ошибка при отправке сообщения в Alfa канал: {e}")
                        traceback.print_exc()
 
                @telegram_client.on(events.NewMessage(pattern=r'#beta\s+.*'))
                async def handler_beta(event):
                    try:
                        message = event.raw_text[5:]
                        beta_channel = discord_client.get_channel(DISCORD_CHANNEL_BETA_ID)
                        if beta_channel:
                            await beta_channel.send(message)
                    except Exception as e:
                        print(f"Ошибка при отправке сообщения в Beta канал: {e}")
                        traceback.print_exc()
 
 
                print("Telegram bot started.  Waiting for messages...")
                await telegram_client.run_until_disconnected()
 
    except telethon_errors.SessionPasswordNeededError:
        print("Two-factor authentication required. Enter the code from Telegram.")
    except telethon_errors.rpcerrorlist.RpcError as e:
        print(f"Telegram API error: {e}")
        traceback.print_exc()
    except discord.errors.LoginFailure as e:
        print(f"Discord login failed: {e}")
        traceback.print_exc()
    except discord.errors.HTTPException as e:
        print(f"Discord HTTP error: {e}")
        traceback.print_exc()
    except Exception as e:
        print(f"An unexpected error occurred: {e}")
        traceback.print_exc()
 
if __name__ == "__main__":
    asyncio.run(main())

Офлайн

#2 Ноя. 18, 2024 22:42:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Не работает мост между Discord и Telegram

Сделай отдельный скрипт. В нём напиши подключение к Discord'у. Убедись, что подключение происходит и ответ из Discord'а приходит.
Если не получается асинхронный скрипт написать, который бы работал, то напиши синхронный скрипт.

Dober_Show
На всякий скажу что похожий код используя те же библиотеки работает.
Конкретизируй, какой код работает.



Офлайн

#3 Ноя. 18, 2024 22:49:30

Dober_Show
Зарегистрирован: 2024-11-18
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает мост между Discord и Telegram

py.user.next
Сделай отдельный скрипт. В нём напиши подключение к Discord. Убедись, что подключение происходит и ответ от Discord приходит. Если не получается написать асинхронный скрипт, который бы работал, то напиши синхронный скрипт.
Я написал код взяв в пример код с GitHub. И хотел написать похожий с возможностью отправлять сообщения из Telegram по “#”. Например “#alfa Привет” должно отправиться в чат с id привязанным к этому #.
Вот ссылка на проект с которого я брал пример:
https://github.com/the-overclock-bakery/tob-telegramtodiscord

Офлайн

#4 Ноя. 19, 2024 03:19:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Не работает мост между Discord и Telegram

То есть ты его не запускал. Так что сделай скрипт подключения к Discord-боту и отправки в него сообщения. Если у тебя простейший скрипт не подключится к Discord'у, то более сложный тем более не подключится.



Офлайн

#5 Ноя. 19, 2024 13:49:17

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2739
Репутация: +  183  -
Профиль   Отправить e-mail  

Не работает мост между Discord и Telegram

Специально для тех кто не смотрит телевизор
https://www.rbc.ru/technology_and_media/08/10/2024/67054cbf9a79474670135b84



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Ноя. 19, 2024 15:54:08

Dober_Show
Зарегистрирован: 2024-11-18
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает мост между Discord и Telegram

Rodegast
Специально для тех кто не смотрит телевизор https://www.rbc.ru/technology_and_media/08/10/2024/67054cbf9a79474670135b84
Скажу тебе так, Discord далеко не у всех заблокирован) И у меня в том числе)

Офлайн

#7 Ноя. 19, 2024 15:56:55

Dober_Show
Зарегистрирован: 2024-11-18
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает мост между Discord и Telegram

py.user.next
То есть ты его не запускал. Так что сделай скрипт подключения к Discord-боту и отправки в него сообщения. Если у тебя простейший скрипт не подключится к Discord'у, то более сложный тем более не подключится.
Я как раз запускал его, а вот отдельно лично мой скрипт у меня не получается. Возможно я чего то не указал в коде. Чужие скрипты работают.

Офлайн

#8 Ноя. 19, 2024 20:06:20

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Не работает мост между Discord и Telegram

Dober_Show
Возможно я чего то не указал в коде.
Добавь вывод сообщений в консоль на каждом шаге.

Например, вошёл к контекст - добавь сообщение “вошёл в контекст”, вошёл в обработчик - добавь сообщение “вошёл в обработчик”. И так для каждого этапа.



Офлайн

#9 Ноя. 20, 2024 10:35:21

Dober_Show
Зарегистрирован: 2024-11-18
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает мост между Discord и Telegram

py.user.next
Добавь вывод сообщений в консоль на каждом шаге.
Почитайте код, там все возможные ошибки прописаны.
Да и проблема была обнаружена. В логике подключения к Дискорд боту тупо отсутствует токен для подключения + ещё не прописана логика отправки сообщений. Если бы вы читали код наверняка увидели это так как полагаю у вас опыта в программировании гораздо больше чем у меня.

Офлайн

#10 Ноя. 20, 2024 19:51:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Не работает мост между Discord и Telegram

Dober_Show
В логике подключения к Дискорд боту тупо отсутствует токен для подключения
Ну да, именно это ты бы и обнаружил, если бы сделал вот это.

Dober_Show
Почитайте код, там все возможные ошибки прописаны
Я говорю про пустой экран, который ты наблюдаешь, хоть все ошибки и прописаны. Нужно, чтобы там был не пустой экран, а отладочные информативные сообщения.

Dober_Show
как полагаю у вас опыта в программировании гораздо больше чем у меня
Ну если ты отлаживать код не умеешь, то, конечно, это видно. Почему я и взялся отлаживать твой код вместо тебя, сам ведь ты бы не догадался.

Так что print() должен стоять на входах всех. Тогда на экране будет видно, докуда доходит программа, а докуда не доходит. И значения в переменных тоже заодно можно будет посмотреть.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version