forward.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { ChatGetter } from "./chatGetter";
  2. import { SenderGetter } from "./senderGetter";
  3. import { Api } from "../api";
  4. import type { TelegramClient } from "../../client/TelegramClient";
  5. import type { Entity } from "../../define";
  6. import { _EntityType, _entityType } from "../../Helpers";
  7. import { _getEntityPair, getPeerId } from "../../Utils";
  8. export class Forward {
  9. private originalFwd: Api.MessageFwdHeader;
  10. constructor(
  11. client: TelegramClient,
  12. original: Api.MessageFwdHeader,
  13. entities: Map<number, Entity>
  14. ) {
  15. // Copy all objects here. probably need a better way tho. PRs are welcome
  16. Object.assign(this, original);
  17. this.originalFwd = original;
  18. let senderId = undefined;
  19. let sender = undefined;
  20. let inputSender = undefined;
  21. let peer = undefined;
  22. let chat = undefined;
  23. let inputChat = undefined;
  24. if (original.fromId) {
  25. const ty = _entityType(original.fromId);
  26. if (ty === _EntityType.USER) {
  27. senderId = getPeerId(original.fromId);
  28. [sender, inputSender] = _getEntityPair(
  29. senderId,
  30. entities,
  31. client._entityCache
  32. );
  33. } else if (ty === _EntityType.CHANNEL || ty === _EntityType.CHAT) {
  34. peer = original.fromId;
  35. [chat, inputChat] = _getEntityPair(
  36. getPeerId(peer),
  37. entities,
  38. client._entityCache
  39. );
  40. }
  41. }
  42. ChatGetter.initClass(this, {
  43. chatPeer: peer,
  44. inputChat: inputChat,
  45. });
  46. SenderGetter.initClass(this, {
  47. senderId: senderId,
  48. sender: sender,
  49. inputSender: inputSender,
  50. });
  51. this._client = client;
  52. }
  53. }
  54. export interface Forward extends ChatGetter, SenderGetter {}