69 lines
2.8 KiB
Plaintext
69 lines
2.8 KiB
Plaintext
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 |