Closed Slona closed 1 year ago
Hello,
Will check on it. Could you provide more details about your environment such as OS, Python version and installed package.
Its Ubuntu 20.04.5 LTS, Python 3.8.10. Packages were installed via requirements.txt
Would you be able to upgrade to 3.10 or later? As I suspect your outdated python version is the issue, as the bot was designed with at least 3.10 in mind due to changes in Python features. If it would be easier you can also run the bot in a docker container for which I can give you the build file or push an image.
My Ubuntu only wants to work with 3.8 version. When i install 3.10 up ahead, it looses all modules (including pip). And if i install them again, they roll back python to 3.8. I dunno how to fix that So probably docker will be easiest solution
My Ubuntu only wants to work with 3.8 version. When i install 3.10 up ahead, it looses all modules (including pip). And if i install them again, they roll back python to 3.8. I dunno how to fix that So probably docker will be easiest solution
After installing a new version of Python you must specify it to the system as the primary/priority version or might use the old one still. Either way I will push a docker image when able.
Yeah, i tried to do this via
sudo update-alternatives --config python3
and choosing 3.10 version. But packages are still "linked" to 3.8 version and though --version shows that current version is 3.10, running python3 main,py says there are no required packages installed (e.g. telethon)
So i will wait for docker, thank you!
I also let the script run this time after it stops and after some time it has given me a message
Getting difference for channel updates 1882573479 caused AuthKeyUnregisteredError; ending getting difference prematurely until server issues are resolved
Eh the pipeline isn't happy for what ever reason, pull the new changes and build and image on your own machine then run that in docker. You can find an example how to pass env's with compose in my other repo, building the image I believe is achieved with "docker build -t TelegramBot .
Do you know how to automate entering Telegram bot ID at the start of the script? It asks every time i run it
BTW i have succeeded with installing python 3.10 and that didnt help. Trying to build docker
Yeah, this cant be run in container, because it asks for TG bot ID
⠿ Container tgdc-bot1-1 Created 0.1s Attaching to tgdc-bot1-1 tgdc-bot1-1 | Traceback (most recent call last): tgdc-bot1-1 | File "//main.py", line 135, in
tgdc-bot1-1 | start() tgdc-bot1-1 | File "//main.py", line 48, in start tgdc-bot1-1 | client.start() tgdc-bot1-1 | File "/usr/local/lib/python3.10/site-packages/telethon/client/auth.py", line 134, in start tgdc-bot1-1 | else self.loop.run_until_complete(coro) tgdc-bot1-1 | File "/usr/local/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete tgdc-bot1-1 | return future.result() tgdc-bot1-1 | File "/usr/local/lib/python3.10/site-packages/telethon/client/auth.py", line 171, in _start tgdc-bot1-1 | value = phone() tgdc-bot1-1 | File "/usr/local/lib/python3.10/site-packages/telethon/client/auth.py", line 22, in tgdc-bot1-1 | phone: typing.Callable[[], str] = lambda: input('Please enter your phone (or bot token): '), tgdc-bot1-1 | EOFError: EOF when reading a line tgdc-bot1-1 exited with code 139
I used python 3.10 instead 3.11 as in your Dockerfile
Yeah, this cant be run in container, because it asks for TG bot ID
Have you passed the required env vars to the container? If it asks for input run it in interactive mode. I just got to my PC so I'll boot up a fresh Ubuntu VM and test myself in a few.
Yeah, this cant be run in container, because it asks for TG bot ID
Have you passed the required env vars to the container? If it asks for input run it in interactive mode. I just got to my PC so I'll boot up a fresh Ubuntu VM and test myself in a few.
Yes, all ENVs were passed, after some lessons i was able to do it in right way :) But TG bot ID is asked separately after script is run, so i was not able to pass it
_FROM python:3.10 WORKDIR / ENV WEBHOOK='https://discord.com/api/webhooks/XXXX' ENV APPID="XXXXXX" ENV APIHASH="XXXXXXXXXXX" ENV APINAME="TGDC" ENV DLLOC='/home/slona/temp' ENV INPUTCHANNELS=-1001882573479 COPY . . RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 RUN python3.10 -m pip install -r requirements.txt CMD ["python","-u","main.py"]
Here are contents of Dockerfile. Then i have used sudo docker compose up and after all downloads got the error i posted before. I tried to add one more line with _CMD ["TG_BOTID"], but that also havent worked
_FROM python:3.10 WORKDIR / ENV WEBHOOK='https://discord.com/api/webhooks/XXXX' ENV APPID="XXXXXX" ENV APIHASH="XXXXXXXXXXX" ENV APINAME="TGDC" ENV DLLOC='/home/slona/temp' ENV INPUTCHANNELS=-1001882573479 COPY . . RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 RUN python3.10 -m pip install -r requirements.txt CMD ["python","-u","main.py"]
Here are contents of Dockerfile. Then i have used sudo docker compose up and after all downloads got the error i posted before. I tried to add one more line with _CMD ["TG_BOTID"], but that also havent worked
Hmm can't really say about passing ENV in Dockerfile never done it I was speaking of in either compose file or docker run command. RUN curl is that needed the python image should have pip by default.
RUN curl is that needed the python image should have pip by default.
It was needed when not using docker to install pip for 3.10 Removed it now, result id the same Also changed python in docker to 3.11
Hmm can't really say about passing ENV in Dockerfile never done it I was speaking of in either compose file or docker run command.
Ah, i understood what you mean. Okay, i have reverted Dockerfile to the one you provided here and changed docker-compose.yml using ENVs. The error now is totally the same i posted before:
tgdcbot | Traceback (most recent call last): tgdcbot | File "//main.py", line 135, in
tgdcbot | start() tgdcbot | File "//main.py", line 48, in start tgdcbot | client.start() tgdcbot | File "/usr/local/lib/python3.11/site-packages/telethon/client/auth.py", line 134, in start tgdcbot | else self.loop.run_until_complete(coro) tgdcbot | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tgdcbot | File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete tgdcbot | return future.result() tgdcbot | ^^^^^^^^^^^^^^^ tgdcbot | File "/usr/local/lib/python3.11/site-packages/telethon/client/auth.py", line 171, in _start tgdcbot | value = phone() tgdcbot | ^^^^^^^ tgdcbot | File "/usr/local/lib/python3.11/site-packages/telethon/client/auth.py", line 22, in tgdcbot | phone: typing.Callable[[], str] = lambda: input('Please enter your phone (or bot token): '), tgdcbot | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tgdcbot | EOFError: EOF when reading a line tgdcbot exited with code 139
Yeah docker idk how or if it will work, not gonna pursue that. I tested on a fresh instance of ubuntu-22.04.1-live-server-amd64.iso with minimal install and it worked fine on python 3.10.6 and in 20 minutes did not stall. Suggest you try a new machine/VM or another network.
Okay, will do a fresh install and try. Will return after test )
Ha, seems that i have found and solved the issue. For auth i have used the bot, which was already used with another webhook. Seems that after some time it was starting to conflict. So i have regged a brand new one TG bot and used it for auth. Currently running 10 minutes with no stall. Gonna test it for a few hours more, but think that it will continue to work.
Anyway, do you know any way to pass TG bot ID to script as argument without need to enter it every time i run script? So i can put it into autostart and forget?
Glad to see you resolved it :)
As for TG bot ID, I guess that's from having multiple bots which I haven't ever faced as I only have 1, so no clue. For me it only asks the login code on first run.
I have only one bot either, but still asked every time for bot ID. Or the phone, but I don't want to get random script from the internet full access to my TG account so phone is not an option.
I have only one bot either, but still asked every time for bot ID. Or the phone, but I don't want to get random script from the internet full access to my TG account so phone is not an option.
A credentials file should be created after you first login, could be missing permissions if it doesn't. It's been a long time since I actually used it so things could have changed, but only needed to login once unless that cache was deleted.
If you're referring to my script, its open source and short so you can verify yourself that it's not malicious or to add your own solutions, reverse engineer etc.
Bot is starting with no issues and works as intended, but after some time (minute or 2-3) stops doing anything. And there is nothing in console.