v6
This commit is contained in:
69
backend/docs/telegram.txt
Normal file
69
backend/docs/telegram.txt
Normal file
@@ -0,0 +1,69 @@
|
||||
const { Api, TelegramClient } = require('telegram')
|
||||
const { StringSession } = require('telegram/sessions')
|
||||
const session = new StringSession('')
|
||||
|
||||
const apiId = 26746106
|
||||
const apiHash = '29e5f83c04e635fa583721473a6003b5'
|
||||
const BOT_TOKEN = '7236504417:AAGVaodw3cRwGlf-jAhwnYb51OHaXcgpW8k';
|
||||
|
||||
const client = new TelegramClient(session, apiId, apiHash, {})
|
||||
|
||||
(async function run() {
|
||||
await client.start({botAuthToken: BOT_TOKEN})
|
||||
...
|
||||
})()
|
||||
|
||||
Получение информации о себе
|
||||
const result = await client.getEntity("me")
|
||||
|
||||
Группа при создании имеет тип group. Её id выглядит как -4646437202
|
||||
Для получения информации надо отбросить минус
|
||||
const result = await client.getEntity(new Api.PeerChat({ chatId: 4646437202n }))
|
||||
Для получения пользователей и описания
|
||||
const result = await client.invoke(new Api.messages.GetFullChat({chatId: 4646437202n}))
|
||||
|
||||
После включения топиков группа меняется на канал и её id становится вида -1002496664184
|
||||
Для получения информации
|
||||
const result = await client.getEntity(new Api.PeerChannel({ channelId: -1002496664184n }))
|
||||
При этом аттрибут forum = true
|
||||
Если топики отключить, то id и класс уже не меняется, но forum = false
|
||||
Для получения списка пользователей канала
|
||||
const channel = new Api.PeerChannel({ channelId: -1002496664184n })
|
||||
const result = await client.invoke(
|
||||
new Api.channels.GetParticipants({
|
||||
channel,
|
||||
filter: new Api.ChannelParticipantsRecent(),
|
||||
limit: 999999,
|
||||
offset:0 ,
|
||||
})
|
||||
)
|
||||
|
||||
Скачивание файла из сообщения на диск
|
||||
client.addEventHandler(async (update) => {
|
||||
const msg = update.message
|
||||
if (msg?.className == 'Message') {
|
||||
const buffer = await client.downloadMedia(msg, {})
|
||||
fs.writeFileSync("d:/CODES/Telegram/tmp/file", buffer)
|
||||
}
|
||||
|
||||
}, new NewMessage({}));
|
||||
|
||||
Примеры кода
|
||||
Получение списка пользователей в супергруппе
|
||||
https://gist.github.com/waptik/9de410055eac8a60668ce7ac1e5183ac
|
||||
|
||||
Ссылка для выбора группы - https://qna.habr.com/q/1374460
|
||||
|
||||
У пользователя есть Name = First Name + Last Name - обязательно, а также username - опционально для t.me/username
|
||||
|
||||
Выбор куда отправить - ForwardTo - https://core.telegram.org/widgets/share
|
||||
|
||||
Размеры превьюшек - https://core.telegram.org/api/files#stripped-thumbnails
|
||||
|
||||
you can just pass an ID.
|
||||
if channel/superroup => add -100
|
||||
if group add => -
|
||||
if user don't add anything
|
||||
for example for your test group2 it would be
|
||||
client.sendMessage(-463172658,{params})
|
||||
https://github.com/gram-js/gramjs/issues/146#issuecomment-913528553
|
||||
Reference in New Issue
Block a user