1 | pip install telethon | cs |
먼저 콘솔창에서 요로코롬 입력하여 telethon 모듈을 설치해준뒤 아래 코드 전문을 개발환경에서 작성해봅시다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from telethon import TelegramClient import asyncio import nest_asyncio api_id = '314315315' api_hash = 'a6dabdabdabda43414e3' client = TelegramClient('session_file', api_id, api_hash) async def Run_Telethon(): await client.start() print('okay') await client.disconnect() nest_asyncio.apply() asyncio.run(Run_Telethon()) | cs |
위 코드는 세션파일을 열었다 닫아줄뿐인 단순한 코드입니다.
1 2 3 | from telethon import TelegramClient import asyncio import nest_asyncio | cs |
비동기함수및, 텔레톤 모듈을 사용하기위해 필요한 모듈을 불러옵니다.
1 2 3 | api_id = '123214124' api_hash = 'adbdabdabar1341341413' client = TelegramClient('session_file', api_id, api_hash) | cs |
api_id, api_hash
1장에서 발급받은 api_id 와 api_hash 키를 각각의 변수에 대입해줍니다.
'api_id' 의 경우 저렇게 문자열로 들어가던 따옴표를 떼고 정수형으로 넣어주던 문제가 되지않습니다.
저의 경우에는 실제사용시 메모장에서 불러오기때문에 별도의 변환없이 문자열로 넣어주고있습니다.
client = TelegramClient('session_file',api_id,api_hash)
TelegramClient() 함수에 인자값을 넣어주고 client 변수로 새로 생성합니다.
저기서 'session_file' 은 불러오거나 없을경우 새로 만들 파일의 이름입니다. 그렇기때문에 저 이름대신 'rabbit' 또는 'ryzen' 등의 다른 이름을 사용하셔도 무관합니다.
api_id 와 api_hash 는 위에서 만든 변수를 인자값으로 사용합니다.
1 2 3 4 | async def Run_Telethon(): await client.start() print('okay') await client.disconnect() | cs |
await client.start()
이때 세션파일이 만들어지며, 세션파일이 없는경우 1장에서 api 키 발급을위해 전화번호와 인증번호를 입력했던것을 이번에는 콘솔창에서 입력하여 최초 1회 인증을 거치게됩니다.
print('okay')
세션파일이 정상적으로 실행되지않는경우 바로 exception과 함께 에러메세지가 나오기때문에 정상적으로 진행이됬음을 콘솔창에 띄워주기위한 단순한 로그입니다.
await client.disconnect()
세션파일을 닫아줍니다.
1회성인경우 이부분은 없어도되는내용이지만 세션파일을 닫아주지않고 프로그램이 비정상적으로 종료가되는경우, 다음에 같은 세션파일을 사용하려고할시 'database is locked' 이라는 에러메세지와함께 해당 세션파일을 사용할수없게됩니다.
1 2 | nest_asyncio.apply() asyncio.run(Run_Telethon()) | cs |
nest_asyncio.apply()
이벤트 루프를 만들어줍니다.
asyncio.run(Run_Telethon())
메인 함수를 비동기로 호출합니다.
그렇게 모두 작성을하고 실행을하게되면 처음인경우 인증절차를 지나, 또는 바로 okay 메세지가 출력됩니다.
세션파일의 경우 생성이후 문제가생겨 파일이 잠기지않는한, 위치를 이동하더라도 새로 인증받을필요가 없기때문에 간편합니다.
다만 간편한만큼 파일보관에는 신경을 좀더 쓸필요가있습니다. api자체에 별도의 ip 필터링이없기때문에 파일만있다면 누구나 자신의 텔레그램을 엿볼수있다는거죠.
본격적으로 메세지에상호작용하는 기능은 다음장에 이어쓰도록하겠습니다.
'휴지통' 카테고리의 다른 글
C# / for 문 (반복문) (0) | 2022.12.20 |
---|---|
Python / Telethon 을 사용해보자 3장 - 메세지 상호작용 (0) | 2022.12.20 |
TELETHON 모듈을 사용해보자 1장 - API키 발급 (0) | 2022.12.20 |
Python 전역변수를 사용하는 여러가지 방법 (0) | 2022.12.20 |
The associated script can not be loaded (0) | 2022.12.20 |