> For the complete documentation index, see [llms.txt](https://docs.kuthulu.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kuthulu.xyz/contracts/hashtags.md).

# Hashtags

Full hashtag support and indexing for user and group posts.

This smart contract, `Hashtags`, serves the purpose of keeping a list of messages IDs linked to different hashtags. These hashtags are used in KUTHULU posts.

This contract inherits from `Initializable`, `PausableUpgradeable`, and `OwnableUpgradeable` from the OpenZeppelin library.

### Table of Contents

1. [Public Functions](#public-functions)

***

## <mark style="color:purple;">Public Functions</mark>

### GetMsgIDsFromHashtag

This function is used for querying a list of messages that have used a specific hashtag. In KUTHULU, it can be used to track posts related to certain trending topics by searching for the specific hashtags.

#### Function

```solidity
function getMsgIDsFromHashtag(string memory hashtag, uint256 startFrom) public view whenNotPaused returns(uint256[] memory)
```

#### Inputs

| Name        | Type    | Description                           |
| ----------- | ------- | ------------------------------------- |
| `hashtag`   | string  | The hashtag to retrieve messages from |
| `startFrom` | uint256 | The ID to start getting records from  |

#### Outputs

| Name      | Type       | Description                                        |
| --------- | ---------- | -------------------------------------------------- |
| `returns` | uint256\[] | An array of message IDs that have used the hashtag |

#### Usage

```javascript
const contract = new ethers.Contract(contractAddress, abi, provider);

const hashtag = 'Kultish';
const startFrom = 0;

const messageIds = await contract.getMsgIDsFromHashtag(hashtag, startFrom);
console.log(messageIds);
```
